useReducer๋ ๋ฌด์์ผ๊น? useReducer๋ ๋ฆฌ์กํธ์์ ์ ๊ณตํ๋ ์ํ๊ด๋ฆฌ๋ฅผ ์ํ ํ
์
๋๋ค. useState์๋ ๋ค๋ฅธ ์ํ๊ด๋ฆฌ๋ฅผ ํ ์ ์๋ค๋ ๊ฒ์ด ์ฅ์ ์ธ๋ฐ์. ์ด ํ
์ ์ฌ์ฉํ๋ฉด ์ปดํฌ๋ํธ์ ์ํ ์
๋ฐ์ดํธ ๋ก์ง์ ์ปดํฌ๋ํธ์์ ๋ถ๋ฆฌ์ํฌ ์ ์๋๊ฒ ์ฅ์ ์
๋๋ค. ๋ค๋ฅธ ํ์ผ์ ์์ฑ ํ ๋ถ๋ฌ์์ ์ฌ์ฉํ ์๋ ์์ต๋๋ค. useReducer์ ๊ตฌ์ฑ์์ const reducer = (state,action) => { } const initialState = { } function App(){ const [state,dispatchFn] = useReducer(reducer,initialState); //์ดํ์๋ต.. } useReducer๋ reducer ํจ์์ ์ด๊ธฐ๊ฐ์ธ initialState๋ฅผ ์ธ์๋ก ๋ฐ์์ผ ํฉ๋..
react
useReducer ์ฐ๋ฆฌ๋ react์์ useState๋ก ์ํ๊ด๋ฆฌ๋ฅผ ํ ์ ์์๊ณ ์ด๋ ๊ฝค ๊ฐ๋จํ๋ค. ํ์ง๋ง ์กฐ๊ธ์ ๋ณต์กํ ์ํ๋ฅผ ๋ค๋ฃจ์ด์ผ ํ๋ค๋ฉด useReducer๋ฅผ ๊ณ ๋ คํด๋ณด์ ๋ณต์กํ ์ํ์ ๊ฒฝ์ฐ useState๋ง์ ์ฌ์ฉํ๋ฉด ์ด๋ ค์์ง๊ณ ์ค๋ฅ๊ฐ ์๊ธธ ์ ์๊ธฐ ๋๋ฌธ์ด๋ค. ๋ฌธ์ ๊ฐ ๋ ๋งํ ๋ถ๋ถ ๋ค๋ฅธ state๋ฅผ ๊ธฐ๋ฐ์ผ๋ก state๋ฅผ ์
๋ฐ์ดํธ ํ ๋ ๋ฌธ์ ๊ฐ ์๊ธธ ์ ์๋ค. -> useReducer๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข๋ค. ํ๋์ state, ๊ฐ์ฒด๋ฅผ ๋ง๋ค์ด์ ๋ณด๊ดํ ์๋ ์์ง๋ง ๋ ๋ณต์กํด์ง๊ธฐ ๋๋ฌธ์ ์ ์ฌ์ฉํ์ง ์๋๋ค. ์์์ฝ๋ const [state, dispatchFn] = useReducer(reducerFn, initialState, initFn); useReducer ์ฌ์ฉํด๋ณด๊ธฐ const [entered..
์ฌ๋ฌ๋ถ๋ค ๋ฆฌ์กํธ์์ useEffect๋ฅผ ์ฌ์ฉํ์ฌ ์ฝ๋ฉ์ ํ๋๋ฐ useEffect๊ฐ 2๋ฒ ์คํ๋์ด ๋๊ฐ ํ์
จ๋ ์ ์ด ์์ผ์ ๊ฐ์? ์ ๋ํ useEffect์์ ๋ฐ์ดํฐ๊ฐ ์ ์์ ์ผ๋ก ์ฒ๋ฆฌ๋์๋์ง ํ์ธํ๊ธฐ ์ํด ์ฝ์ ์ถ๋ ฅ์ ํด๋ณด๋ฉด 2๋ฒ์ด ์ถ๋ ฅ๋๋ ๋ฌธ์ ๊ฐ ์์์ต๋๋ค. ์ด๊ฒ์ ์ด์ ๋ก๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. 1.React StrictMode - CRA์์ React Strict Mode ์๊ธฐ cra๋ก ํ๋ก์ ํธ๋ฅผ ์์ฑํ๋ค๋ฉด strict mode๊ฐ index.js์ ์ ์ฉ๋์ด ์์ ํ
๋ฐ ์ด๊ฒ์ ์ ๊ฑฐํ๋ฉด ๋ฉ๋๋ค. 2. Next.js์์ React Strict Mode ์์ ๊ธฐ next.config.js์์ reactStrictMode๋ฅผ false๋ก ๋ฐ๊ฟ์ฃผ๋ฉด ๋ฉ๋๋ค. strict ๋ชจ๋๋ ์์ ํ์ง ์์ ์๋ช
์ฃผ๊ธฐ, ๋ ๊ฑฐ์ API ์ฌ..
fetch๋ axios๋ก data๋ฅผ fetching ํ๋ค๋ฉด ์์ ๊ฐ์ด state๋ฅผ ๋ง๋ค๊ณ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์์จ ์ดํ setState๋ฅผ ์ด์ฉํด ๋ฐ์ดํฐ๋ฅผ ๊ฐฑ์ ํด ์ฃผ์ด์ผ ํ ๊ฒ์
๋๋ค. ํ์
์คํฌ๋ฆฝํธ๋ฅผ ์ ์ฉํ ํ๋ก์ ํธ์์ ์ ๊ฐ์ด ์ธ ๊ฒฝ์ฐ์๋ state๋ฅผ ์ฌ์ฉํ ๋ ์ค๋ฅ๊ฐ ๋ ์ ์์ต๋๋ค. state๊ฐ ๊ฐ์ฒด๋ผ๋ฉด state.value์ ๊ฐ์ด ์ ๊ทผํ ํ
๋ฐ ์ด ๋ถ๋ถ์์ ํ์
์คํฌ๋ฆฝํธ๊ฐ ์ค๋ฅ๋ก ๊ฐ์งํฉ๋๋ค. useState({})๋ง์ ์
๋ ฅํ๋ค๋ฉด ํ์
์คํฌ๋ฆฝํธ๋ {} ๋ง์ผ๋ก๋ ํ์
์ถ๋ก ์ ํ ์ ์์ต๋๋ค. ๋ง์ฝ boolean๊ณผ ๊ฐ์ด ํ์
์ด ํ์คํ ๊ฐ์ ์ฃผ์๋ค๋ฉด ์ค๋ฅ๊ฐ ์๊ธฐ์ง ์์ต๋๋ค. ํด๊ฒฐ๋ฐฉ๋ฒ any๊ฐ ์ถ๊ฐ๋๋ฉด ๋ฌธ์ ๊ฐ ํด๊ฒฐ์ด ๋ฉ๋๋ค. ํน์ ์์ ๊ฐ์ Interface( ์์ ์ฝ๋์๋ ์๊ด ์๋ ์ฝ๋) ๋ฅผ ์ ์ธํด์ ๋์ ์จ์ฃผ๋ฉด ๋๋๋ฐ ..
๋ฆฌ์กํธ๋ก ๊ฐ๋ฐํ ๋ ์๋ฒ์์ ๋ฐ์ดํฐ๋ฅผ fetchingํ๊ณ loading ์ฒ๋ฆฌ๋ฅผ ํ๊ธฐ ์ํด์ state์ fetchํน์ axios๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ด์ฉํ๋ค. ์ด ์ผ๋ จ์ ๊ณผ์ ์ ๋จ ์ฝ๋ ํ๋๋ก ๊ฐํธํ ํ ์ ์์ผ๋ฉฐ caching๊ธฐ๋ฅ ๊น์ง ์๋ react-query๋ผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์๋ค. import { QueryClient, QueryClientProvider } from "react-query"; root.render( ); ์์ง์ ์ providerํ์์ผ๋ก ์ต์์ ๋ถ๋ชจ์๊ฒ ์์ ๊ฐ์ด ํด์ฃผ๋ ์ง ๋ชจ๋ฅด๊ฒ ๋ค. ๋ด ๋ธ๋ก๊ทธ๋ ์์ง ์ ๋ณด์ ๋ฌ์ฑ ๋ณด๋ค๋ ๊ณต๋ถ ๊ธฐ๋ก ์ผ๊ธฐ์ ๊ฐ๊น์ฐ๋ ์ด๋ ์ฐจํ์ ๋ด ์ค๋ ฅ์ด ๋จ์๊ฒ ์ข์ ์ ๋ณด๋ฅผ ์ ๋ฌํ ์์ค์ด ๋๋ค๋ฉด ํฌ์คํ
ํ ๊ฒ์ด๋ค. const { isLoading, data } = useQue..
๋ฆฌ์กํธ ๊ฐ๋ฐ์ ํ ๋ CSS๋ฅผ ์ ์ฉํ๊ธฐ ์ํด์๋ ๋ฐ๋ก cssํ์ผ์ ๋ง๋ค์ด์ js, jsx ํ์ผ์ importํ๊ฑฐ๋ ์ธ๋ผ์ธ์ผ๋ก ์ง์ ํด์คฌ์ด์ผ ํ์ต๋๋ค. ์ ์์ ๊ฒฝ์ฐ๋ ํ์ผ์ ๊ฐ์๊ฐ ๋์ด๋๊ณ ํด๋์ค ๋ค์์ ์ผ์ผ์ด ๋ถ์ฌ์ค์ผ ๋๋ค๋ ๋ถํธํจ์ด ์๊ณ ํ์์ ๊ฒฝ์ฐ๋ jsx๋ฐฉ์์ผ๋ก css์คํ์ผ์ ์ง์ ํด์ค์ผ ํ๋ค๋ ๋ถํธํจ์ด ๋ฐ๋ฅด์ฃ . ์ด๊ฒ๋ค์ ํด๊ฒฐํด์ฃผ๊ณ ์กฐ๊ธ๋ ๋ฆฌ์กํธ ์ค๋ฝ๊ฒ ์คํ์ผ์ ์ ์ฉํ ์ ์์ผ๋ฉฐ ์ฌ๋ฌ ๊ฐ๋ ฅํ ๊ธฐ๋ฅ๋ค์ ์ ๊ณตํด์ฃผ๋ styled-components๋ฅผ ์๊ฐํฉ๋๋ค. styled-components ์ค์น npm install styled-components js ํ์ผ์ import import styled from "styled-components"; styled-components ์ฌ์ฉ๋ฒ const Box = ..
Recoil์ ์ ์ญ ์ํ๊ด๋ฆฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก ๋ฆฌ์กํธ ์นํ์ ์ธ ๋ฌธ๋ฒ๊ณผ ๊ทธ ์ฌ์ฉ์ด ๊ฐํธํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก CNU SW ์์นด๋ฐ๋ฏธ TA๋์๊ฒ ์ถ์ฒ๋ฐ์ ์ํ๊ด๋ฆฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๋ค. ๋ฆฌ๋์ค๋ ๊ทธ ์ดํ์ ์ฌ์ฉํ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ ์ฐ์ , recoil์ ์ฌ์ฉ๋ฐฉ๋ฒ์ ๋ํด ํฌ์คํ
ํ๊ณ ์ ํ๋ค. ์ด ๊ธ์ ์ฝ์ผ๋ฉด ์์ฃผ ๊ธฐ๋ณธ์ ์ธ recoil ์ฌ์ฉ๋ฐฉ๋ฒ์ ์๊ฒ ๋ ๊ฒ์ด๋ค. Recoil ์ค์น npm install recoil RecoilRoot import React from 'react'; import { RecoilRoot, } from 'recoil'; function App() { return ( ); } recoil์ ์ํ๋ฅผ ์ฌ์ฉํ๋ ์ปดํฌ๋ํธ๋ ๋ถ๋ชจํธ๋ฆฌ ์ด๋๊ฐ์ ๋ํ๋๋ RecoilRoot๊ฐ ํ์ํ๋ค๊ณ ํ๋ค. ๊ณต์ ํํ์ด์ง์์๋ ๋ฃจํธ ์ปดํฌ๋..
- ์ํ๊ด๋ฆฌ๋ ๋ฐ์ดํฐ๋ฅผ ์ ์ญ์ ์ผ๋ก ๊ด๋ฆฌํ์ฌ ๋ถํ์ํ ๋ ๋๋ง์ ์ค์ด๊ณ props drilling์ ํผํ ์ ์๋ค. - ์ํ๋ค์ด ๋ณต์กํ๊ฒ ์ฝํ์๋ค ์ํธ์์กด์ฑ์ด ๋์UI๊ฐ ์ด๋ป๊ฒ ๋ณํ๋์ง ์๊ธฐ ์ด๋ ต๋ค. ํ๋ก์ ํธ๊ฐ ์ปค์ง๊ณ state๊ฐ ์์ญ~์๋ฐฑ๊ฐ๊ฐ ๋๋ค๋ฉด ์ํ๊ด๋ฆฌ๊ฐ ๋น์ฐํ ํ์ํ ๊ฒ์ด๋ค. 1. context api ๊ฐ๋จํ ํ๋ก์ ํธ์์๋ props drilling์ ํผํ ์ ์๋ ์ข์ ๋์์ด ๋ ์ ์๋ค. useReducer๋ฅผ ๊ฐ์ด์ฐ๋ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค. useReducer๋ state๋ฅผ ํ ๊ณณ์์ ๊ด๋ฆฌํ ์ ์๊ฒ ํ๋ค. 2. redux ๋ณด์ผ๋ฌ ํ๋ ์ดํธ๊ฐ ๋ณต์กํ๋ค๊ณ ํ๋๋ฐ redux toolkit์ผ๋ก ์ฐ๋ฉด ๋ ์ฝ๊ณ ๊ฑฐ๊ธฐ์ ํ์
์คํฌ๋ฆฝํธ๋ก ์ฐ๋ฉด ํฐ ํ๋ก์ ํธ ์ค์ผ์ผ๋งํ๊ธฐ๋ ํธํ๋ค๊ณ ํ๋ค. "์ ๊ฐ ๊ฒฝํํ๊ฑธ๋ก๋ ์ผํ๋ชฐ ์ฅ๋ฐ๊ตฌ๋..