끄적끄적 코딩
Published 2020. 11. 11. 00:10
[React] useReducer React

useReducer를 사용하면 여러개의 state를 하나의 state와 하나의 setState로 통일 가능

import React, { useReducer } from 'react';

const initalState = {
  aState: '',
  bState: 0,
  cState: [1, 2, 3],
};

const SET_ASTATE = 'SET_ASTATE';
const SET_BSTATE = 'SET_BSTATE';
const SET_CSTATE = 'SET_CSTATE';

const reducer = (state, action) => {
  switch (action.type) {
    case SET_ASTATE: {
      return {
        ...state,
        aState: action.aState,
      };
    },
    case SET_BSTATE: {
      return {
        ...state,
        bState: state.bState === 'T' ? 'O' : 'X',
      };
    },
    case SET_CSTATE: {
      const cState = [...state.cState];
      cState[0] = 'A';
      return {
        ...state,
        cState,
      };
    }
  }
};

const [state, dispatch] = useReducer(reducer, initialState);

const xFunc = () => {
  const yFunc = () => {
    dispatch({ type: SET_ASTATE, aState: 'T' });
  }

  return <div> {state.aState} </div>
}

이벤트를 통해서 action을 dispatch할 때마다 reducer가 실행됨

initialState - state 정의, 초기화

reducer - type에 해당하는 switch문 코드 실행,  action에서 dispatch에 넣었던 값이 포함됨


 

 

해당 게시글은 www.youtube.com/watch?v=V3QsSrldHqI&list=PLcqDmjxt30RtqbStQqk-eYMK8N-1SYIFn&index=1&ab_channel=ZeroChoTV 의 강의내용을 기반으로 공부한 내용을 정리한 글입니다.

'React' 카테고리의 다른 글

[React] React Router  (0) 2020.11.17
[React] Context API  (0) 2020.11.17
[React] useMemo, useCallback  (0) 2020.11.10
[React] useEffect  (0) 2020.11.09
[React] 클래스 라이프사이클  (0) 2020.11.09

검색 태그