React/영화웹서비스만들기

React.js가 useState로 원하는 Rerendering을 도와주는 방법

냠냠쿠 2024. 4. 8. 13:41
728x90

 

 

 

React.js의 state 사용하기

1. State란? - 기본적으로 데이터가 저장되는 곳 - 현재 실습을 예로 들면 버튼을 클릭하는 count를 state로 만들 수 있다. 2. State에 담는 법 - 일단 JSX코드를 지워준다 - 필요 없는 코드도 지워준다. 3.

sm-lee2026210.tistory.com

위 게시글에 이어서 작성하는 글입니다.

매번 Rerender를 해 줘야하기때문에 좋은 방법이 아니다.
Render 함수를 다시 호출해주면 새 Container 컴포넌트를 생성할 것이라고 생각하지만, 

새로 랜더링 하더라도 바뀐 부분만 새로 생성한다.

문제는 함수의 이름이 변경되는 등의 변수가 생기면 코드를 모두 수정 해 줘야한다.

 

 

1. 리스너 초기화

  <script type="text/babel">
    const root = document.getElementById("root");
    function App() {
      return (
        <div>
          <h3>Total Clicks : 0</h3>
          <button>Click me</button>
        </div>
      );
    }
    ReactDOM.render(<App />, root);
  </script>

 

 

2. 데이터 담기

 

    const root = document.getElementById("root");
    function App() {
      const data = React.useState();
      console.log(data);

위와 같이 React.useState();에 data를 담은 뒤 콘솔을 찍어보면 아래와 같이 나오는데,

[undefined, f] dptj undefined 는 데이터를 f는 데이터를 바꿀때 사용하는 함수를 뜻한다.

그래서 아래와 같이 초기값을 설정 할 수도 있다.

 

      const data = React.useState(0);
      console.log(data);

 

그러면 콘솔에서는 다음과 같이 나온다.

 

 

내가 만약 배열형태의 data 첫 번째 요소를 사용하는 경우 아래와 같이 사용해도 되지만

 <h3>Total Clicks : {data[0]}</h3>

 

아래와같이 배열에서 요소들을 꺼내서 이름을 부여하여 사용할 수도 있다.

    function App() {
      const data = React.useState(0);
      const cnt = data[0];
      const modifier = data[1];
      console.log(data);

 

그리고 위 코드는 아래와 같이 깔끔하게 사용 할 수도 있다.

 

   function App() {
      const [cnt, modifier] = React.useState(0);
      console.log(data);
      return (
        <div>
          <h3>Total Clicks : {cnt}</h3>

 

3. 이벤트적용 

  <script type="text/babel">
    const root = document.getElementById("root");
    function App() {
      let [cnt, modifier] = React.useState(0);
      const onClick = () => {
        cnt += 1;
        console.log(cnt);
      };
      return (
        <div>
          <h3>Total Clicks : {cnt}</h3>
          <button onClick={onClick}>Click me</button>
        </div>
      );
    }
    ReactDOM.render(<App />, root);
  </script>

위와 같이 onClicks 이벤트를 등록 해 주면 modifier가 잘 작동 한다.

 

 

4. Rerendering

  <script type="text/babel">
    const root = document.getElementById("root");
    function App() {
      const [cnt, setCnt] = React.useState(0);
      const onClick = () => {
        setCnt(cnt + 1);
      };
      return (
        <div>
          <h3>Total Clicks : {cnt}</h3>
          <button onClick={onClick}>Click me</button>
        </div>
      );
    }
    ReactDOM.render(<App />, root);
  </script>

실행을 해 보면 잘 돌아간다.

 

728x90