• 로그인
  • 장바구니에 상품이 없습니다.

home2 게시판 React 게시판 usetState 비동기 실행 질문 드립니다.

usetState 비동기 실행 질문 드립니다.

4 글 보임 - 1 에서 4 까지 (총 4 중에서)
  • 글쓴이
  • #34461

    강병민
    참가자

    import React, { useState } from "react"; // useState 를 import

    function App() {
      const [num, setNum] = useState(0);

      const click = () => {
        setNum(num + 1);
        setNum(num + 2);
        setNum(num + 3);
      };

      return (
        <>
          {num}
          <button onClick={click}>click!</button>
        </>
      );
    }

    useState 가 비동기 실행되는 이유가 batch 때문이라고 하고 , batch가 일어나는건 객체의 키값이 같으면 오브젝트 컴포지션이 일어나기 때문이라고 하는데,  그럼 setter 함수가 객체라는 뜻인가요? 그리고 객체의 키 값이 같다는게 setter 함수에서 어떤의미인지 알고싶습니다.

    그리고 함수형 업데이트를 하면 파라미터에 들어오는게 객체가 아니라서 오브젝트 컴포지션이 일어나지 않는다고 하는데 ,  그럼 저 num+1 은 객체라는 뜻인가요..? 계속 찾아볼수록 헷갈리기만 하고 명확한 설명이 없어서 질문드립니다 ㅠㅠ

    #34485

    codingapple
    키 마스터

    오브젝트 컴포지션이 일어난다는건 저도 뭔소린지 모르겠군요 

    아무튼 합쳐서 처리해줘서 재렌더링은 1번만 일어납니다

    #34511

    강병민
    참가자

    음.. 그럼 함수형 업데이트를 사용하면 왜 동기적으로 실행되는지 알수 있을까요???

    #34519

    codingapple
    키 마스터

    state변경함수들은 항상 async 하게 늦게 처리됩니다

    리액트 18버전부터는 state변경함수가 여러개 연달아서 있으면 한 번에 합쳐서 처리해주는데

    그걸 동기적으로 처리된다고 표현했나보네요 

4 글 보임 - 1 에서 4 까지 (총 4 중에서)
  • 답변은 로그인 후 가능합니다.

About

현재 월 700명 신규수강중입니다.

  (09:00~20:00) 빠른 상담은 카톡 플러스친구 코딩애플 (링크)
  admin@codingapple.com
  이용약관, 개인정보처리방침
ⓒ Codingapple, 강의 예제, 영상 복제 금지
top

© Codingapple, All rights reserved. 슈퍼로켓 에듀케이션 / 서울특별시 강동구 고덕로 19길 30 / 사업자등록번호 : 212-26-14752 온라인 교육학원업 / 통신판매업신고번호 : 제 2017-서울강동-0002 호 / 개인정보관리자 : 박종흠