Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 매클로태스크
- 유사배열
- 호출 스택
- 호이스팅
- fetch 취소
- 렉시컬 환경
- localtunnel
- 비동기 작업
- Call stack
- 실행 컨택스트
- 자바스크립트
- 로컬터널
- pushstate
- 로드마크
- 마이크로태스크
- 함수형
- hoisting
- 이벤트 루프
- 웹팩
- webpack
- 화살표 함수
- AbortController
- JavaScript
- 넘블
- debounce
- Lexical environment
- relatedTarget
- 클론코딩
- 이터러블
- 번들러
Archives
- Today
- Total
내가 보려고 만든 개발 공부 일지
React - useReducer 본문
앱이 커질수록 상태변수도 많아질 것이고, 일일이 갱신해주는 코드도 많아져서 상태관리가 힘들고 소스가 난잡해질 것이다.
이런 상황에서 useReducer 는 상태들을 한곳에 모아놓고 관리할 수 있게 해주는 훅이다.
예제 )
const initialState = { userInfo : ~ , userList : ~ };
function reducer(state, action){ ---> C
switch(action.type){
case 'CHANGE_INPUT':
return {
...state,
userInfo : {
...state.userInfo,
[action.name] : action.value
}
};
default:
break;
}
}
function App(){
const [state, dispatch] = useReducer(reducer, initialState); ---> A
const {userList, userInfo} = state;
const onChange = (e)=>{
const {name, value} = e.target;
dispatch({ ---> B
type: 'CHANGE_INPUT',
name,
value
});
}
useReducer 의 선언 형태는 A 와 같고, B를 통해 상태를 업뎃할 함수C를 부르고 C는 상태값을 갱신한다.
reducer : dispatch 를 호출하면 수행되는 함수
initialState : 상태변수의 초기값(1개 or 여러 개, 사용할 상태값을 모아놓은 변수)
state : initalState 로 할당된 상태변수
dispatch : reducer 를 호출하는 함수
dispatch를 호출하면 reducer 함수가 불린다. 이떄 넘겨주는 파라미터로 type (행위를 정의) 과 필요한 값 넘겨주는데,
어떤 행위를 할지 정의한 객체라해서 action 객체라고 부른다.
(저렇게 type을 포함한 객체를 넘기는건 관행일뿐 개발자 맘대로 어떤값이든 넘겨도됨)
reducer 함수는 상태값 state 와 dispatch 에서 넘겨준 action 객체를 인자로 받게되고 switch문에서 type값에 따라 상태값을 갱신해준다.
'React' 카테고리의 다른 글
useState 기본 개념 (0) | 2021.07.02 |
---|---|
Hooks 사용 규칙 (0) | 2021.07.02 |
props.children (0) | 2021.07.02 |
React 컴포넌트 함수형 vs Class형 (0) | 2021.07.02 |
Comments