- React의 State
- 함수형 컴포넌트의 useState
- React의 useState 동작 원리
데이터 변경이 있는 웹 페이지를 만드는 경우
페이지에 있는 데이터 부분이 변경 되었을 때 마다 DOM에 접근
하여 수정
→ 데이터가 변경 된 만큼 사용자가 보는 화면도 변경
되어야 하기 때문
state를 jsx를 안에 넣는 형태
여러 개의 js 객체와 화면에 있는 데이터를 직접 일치
시킴제공자와 소비자로 부터 데이터 원본을 결합시켜 이것들을 동기화
하는 기법리액트는 데이터 바인딩을 대신 해주기 때문
에 좀 더 간편한 구조단방향 데이터 바인딩을 지원
→ 데이터와 템플릿을 결합해 화면을 생산
관련된 화면은 리 렌더링
시킴하향식
으로 데이터가 흐르게 됨자신의 state를 자식 컴포넌트에게 props로 전달
props가 누구로 부터 어떤 방식으로 전달되는지 알 필요 없음
→ 받기만 하면 됨
→ 캡슐화
(state를 가진 컴포넌트 외에는 접근 x)물의 근원
이라면 props는 폭포
와 같음state
state를 갖고 있는 해당 컴포넌트에서 관리
props
state를 자식 컴포넌트에게 넘겨주는 것
읽기 전용
데이터로써 immutable
(불변성)의 성질을 가짐state 값을 저장
하기 위해 hook의 useState
를 활용하게 됨함수형 컴포넌트에서도 state를 사용
할 수 있게 됨갱신된 최신 state를 반환
setState를 통해 state를 변경하는 것이 아님
함수 안
에서 접근 할 수 있는 변수 값을 변경
접근할 수 있는 변수의 값을 업데이트
하고, 이를 배열에 나눠 반환
함수형 컴포넌트가 실행
되면 state 변수는 사실상 계속 할당
됨즉, dispatcher의 메서드인
useState
에초기값을 전달
하면배열을 반환
하며 그 안에state와 setState
가 있다는 것
정리
- useState를 포함한 hooks는 React 모듈에 선언된 함수들
- 실행 될 때 마다 dispatcher 인스턴스 생성 후 useState 메서드를 실행하여 그 값을 반환
- dispatcher는 전역 변수 ReactCurrentDispatcher로부터 가져옴
자신이 선언된 위치에서 접근 할 수 있는 _value를 변경
1. 브라우저에서 어플리케이션이 로딩되고 최초로 App 함수가 호출
2. setState 호출
3. setState가 실행되어 리렌더링이 발생(App 함수가 두 번째로 실행)
즉,
setState
함수는 자신과 함께 반환된 변수(state)를 변경시키는 것이 아닌,다음 useState가 반환할 react 모듈의 _value를 변경시키고, 컴포넌트를 리렌더링 시키는 역할
최초 렌더링 - 첫 클릭 이벤트
setState 실행
setState로 인한 리렌더링 - 두 번째 클릭 이벤트 발생
참고 - 무비의 React State https://www.youtube.com/watch?v=NpTizz_qgtA
참고 - jjunyjjuny (useState는 어떻게 동작할까)