본문 바로가기
Frontend/React

[React] useReducer

by jojo 2022. 1. 19.

 

 

 

useReducer( )

- useState()의 대체 함수로 많이 사용

- useState()보다 상대적으로 복잡하고 많은 데이터를 관리하기 위하여 사용

const [<상태 객체>, <dispatch 함수>] = useReducer(<reducer 함수>, <초기 상태>, <초기 함수>)
  • reducer 함수: 현재 상태의 객체(state)와 수행할 행동 객체(action)을 인자로 받아서 새로운 상태 객체를 반환하는 함수
  • dispatch 함수: 인자로 reducer 함수에 넘길 행동 객체(type)를 받음, 컴포넌트 내에서 상태 변경을 일으키기 위하여 사용
import ReactDOM from 'react-dom';
import React, { useReducer } from 'react'

// count의 초기 state를 0으로 설정
const initialState = {count:0};

function reducer(state, action) {
  switch (action.type) {
    case 'increment':
      return {count: state.count + 1};
    case 'decrement':
      return {count: state.count - 1};
    default:
      throw new Error();
  }
}

function Counter() {
  // useReducer()를 호출
  // useReducer의 인자로 reducer 함수와, 초기상태를 넘겨줌
  const [state, dispatch] = useReducer(reducer, initialState);
  return (
    <>
      Count: {state.count}
      <button onClick={() => dispatch({type: 'decrement'})}>-</button>
      <button onClick={() => dispatch({type: 'increment'})}>+</button>
    </>
  );
}

ReactDOM.render(<Counter />,document.getElementById('root'));

 

 

 

'Frontend > React' 카테고리의 다른 글

[React] useEffect (parameter, clean-up)  (0) 2022.01.19

댓글