useReducer
์ฐ๋ฆฌ๋ react์์ useState๋ก ์ํ๊ด๋ฆฌ๋ฅผ ํ ์ ์์๊ณ ์ด๋ ๊ฝค ๊ฐ๋จํ๋ค. ํ์ง๋ง ์กฐ๊ธ์ ๋ณต์กํ ์ํ๋ฅผ ๋ค๋ฃจ์ด์ผ ํ๋ค๋ฉด useReducer๋ฅผ ๊ณ ๋ คํด๋ณด์ ๋ณต์กํ ์ํ์ ๊ฒฝ์ฐ useState๋ง์ ์ฌ์ฉํ๋ฉด ์ด๋ ค์์ง๊ณ ์ค๋ฅ๊ฐ ์๊ธธ ์ ์๊ธฐ ๋๋ฌธ์ด๋ค.
๋ฌธ์ ๊ฐ ๋ ๋งํ ๋ถ๋ถ
๋ค๋ฅธ state๋ฅผ ๊ธฐ๋ฐ์ผ๋ก state๋ฅผ ์ ๋ฐ์ดํธ ํ ๋ ๋ฌธ์ ๊ฐ ์๊ธธ ์ ์๋ค. -> useReducer๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข๋ค. ํ๋์ state, ๊ฐ์ฒด๋ฅผ ๋ง๋ค์ด์ ๋ณด๊ดํ ์๋ ์์ง๋ง ๋ ๋ณต์กํด์ง๊ธฐ ๋๋ฌธ์ ์ ์ฌ์ฉํ์ง ์๋๋ค.
์์์ฝ๋
const [state, dispatchFn] = useReducer(reducerFn, initialState, initFn);
useReducer ์ฌ์ฉํด๋ณด๊ธฐ
const [enteredEmail, setEnteredEmail] = useState('');
const [emailIsValid, setEmailIsValid] = useState();
์ ์ฝ๋๋ฅผ ํ ์ํ์ ๋ฌถ์ด์ ์ฌ์ฉํ๊ณ ์ถ๋ค. ์ด๋ useReducer๋ฅผ ์ฌ์ฉํ๋ค.
์์ ๊ฐ์ด ํด์ค๋ค. dispatch๋ก๋ ์ํ๋ฅผ ๋ฐ๊พธ๊ณ ์ถ์ ๋ ํธ์ถํ๋ ํจ์๊ฐ ๋๊ฒ ๋ค. reducer๋ action์ ์ํํ ํจ์์ด๋ค.
์๋ dispatch๋ฅผ ์ฌ์ฉํ ๊ฒ์ด๋ค.
ํ์คํ ๋ค๋ฅธ ์ํ๋ก ๋ถํฐ ์ํ์ ๋ฐ์ดํธ๋ฅผ ํ์ง ์๋๋ค๋ ์ฅ์ ์ด ์๋ค.
'react' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[React] useReducer๋? (๊ฐ๋ ๊ณผ use case ์ดํด๋ณด๊ธฐ) (2) | 2023.10.26 |
---|---|
๊ฐ๋ฐ๋ชจ๋์์ useEffect๊ฐ 2๋ฒ ์คํ๋๋ ๊ฒฝ์ฐ (0) | 2023.08.30 |
[React] ๋ฆฌ์กํธ์์ TypeScript๋ฅผ ์ธ ๋ ํ์ํ ๊ฒ (feat. useState) (0) | 2023.08.03 |
[React] react-query ์ useQuery ์์๋ณด๊ธฐ (0) | 2023.08.01 |
[React] Styled-components ์ฌ์ฉ๋ฒ๊ณผ ์ ์ฉํ ๊ธฐ๋ฅ๋ค (0) | 2023.07.28 |