React

[ReactJS] react_chap3.1

효진인데요 2023. 1. 20. 19:25
<!DOCTYPE html>
<html>
    <head></head>
    <body>    
        <div id="root"></div>
    </body>
    <script src="https://unpkg.com/react@17.0.2/umd/react.production.min.js"></script>
    <script src="https://unpkg.com/react-dom@17.0.2/umd/react-dom.production.min.js"></script>
    <script src="https://unpkg.com/@babel/standalone/babel.min.js"></script>
    <script type="text/babel">
        const root = document.getElementById("root");
        
        function App() {
            const [counter, setCounter] = React.useState(0); 
            // 위 line에서 undefined와 함수 하나를 얻게 됨
            // 이때 undefined는 데이터이고 함수는 그 데이터를 바꾸기 위한 함수
            const onClick = () => {
                // setCounter(counter + 1);
                // 어떤 값을 부여하던 modifier함수는 그 값으로 업데이트하고 리렌더링 함
                setCounter((current) => current + 1); // 이게 더 좋은 방법
            };
            console.log("rendered");
            console.log(counter);
            return (
                <div>
                    <h3>Total clicks: {counter}</h3>
                    <button onClick={onClick}>Click me</button>
                </div>
            );
        }
        ReactDOM.render(<App />, root);
    </script>
</html>

 

 

modifier 함수를 가지고 state(setCounter)를 변경할 때 react에 의해 컴포넌트(function)가 재생성됨

(새로운 값을 가지고 리렌더링)

 

코드가 실행되는 과정 : 

1. 버튼을 누르면 counter가 1이 됨
2. console.log(1), Total clicks: 1이 됨
3. 이는 컴포넌트 자체가 재생성 된 것임
4. 데이터(setCounter)가 바뀔때마다 컴포넌트를 리렌더링하고 UI를 refresh하는 것

 

 

바닐라 js를 대체
HTML요소를 생성하거나 찾을 필요 X
이벤트 리스너를 더해줄 필요 X
UI 업데이트 필요 X
-> return 안에서 HTML을 바로 생성해버렸고,
   거기에서 바로 이벤트 리스너를 더해줬고,
   UI를 업데이트 하면 자동으로 리렌더링 됨
 
 

state를 바꾸는 2가지 방법

1. setCounter을 이용해서 원하는 값을 넣어주는 것 

2. 이전 값을 이용해서 현재 값을 계산하는 것 ( 함수를 사용하는 것이 좋음 )

 
 

 

728x90

'React' 카테고리의 다른 글

[ReactJS] 리엑트 프로그램 생성 하는 법  (0) 2023.02.09
[ReactJS] 프로젝트 생성 / useEffect / CleanUp  (0) 2023.01.25
[ReactJS] 단위 변환기 만들기  (1) 2023.01.20
[ReactJS] react_chap3.0  (1) 2023.01.20
[ReactJS] react_chap2  (1) 2023.01.20