외부 라이브러리없이 React가 제공하는 훅만으로 상태관리를 구현하기 위해 사용한다. 함수형 컴포넌트에 상태를 두고, 여러 컴포넌트간 데이터와 데이터 변경 함수를 공유하는 방식으로 상태를 관리하게 된다.
const [ state, setState] = useState(initState| initFn)
useState를 활용한 상태 관리
useContext를 활용한 상태 관리
const [state, dispatch] = useReducer(reducer, initState)
// useReducer()의 인자들을 모두 필수 값_reducer, 초기값
// dispatch(action) -> reducer -> state -> state값을 사용하는 모든 것에 영향
import React, { useReducer } from 'react';
import './App.css';
// count의 초기 state를 0으로 설정하세요.
// 초기값 설정
const initialState = {
count: 0,
};
// reducer함수설정
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 App() {
// ⭐useReducer()를 호출하세요.
const [state, dispatch] = useReducer(reducer, initialState);
return (
<>
Count: {state.count}
<button onClick={() => dispatch({ type: 'decrement' })}>-</button>
<button onClick={() => dispatch({ type: 'increment' })}>+</button>
</>
);
}
export default App;
✔️ reducer 함수는 현재 상태 객체와 수행할 행동 객체를 인자로 받아서 새로운 상태 객체를 반환하는 함수입니다.
✔️dispatch 함수는 컴포넌트 내에서 상태 변경을 일으키기 위해서 사용되는데 인자로 reducer 함수에 넘길 행동 객체를 받습니다.
행동 객체는 일반적으로 어떤 부류의 행동인지를 나타내는 type이나 해당 행동과 관련된 데이터를 담고 있습니다.
다시 말해, 컴포넌트에서 dispatch 함수에서 넘겨준 행동을 하면 reducer 함수가 이 행동에 따라서 상태를 변경해줍니다.
#엘리스트랙 #엘리스트랙후기 #리액트네이티브강좌 #온라인코딩부트캠프 #온라인코딩학원 #프론트엔드학원 #개발자국비지원 #개발자부트캠프 #국비지원부트캠프 #프론트엔드국비지 #React #Styledcomponent #React Router Dom #Redux #Typescript #Javascript
react-router-dom (4) | 2023.12.03 |
---|---|
CSS-in-js VS Styled Components (4) | 2023.11.26 |
Hook(1) (3) | 2023.11.26 |
Props (0) | 2023.11.19 |
Element (0) | 2023.11.19 |