๐ ์ฐ๋ฆฌ๊ฐ ์ดํด๋ณผ ์ฒซ ๋ฒ์งธ React-Redux Hook์ธ useSelector ๋ React ๊ตฌ์ฑ ์์๊ฐ Redux ์ ์ฅ์์์ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ ์ ์๊ฒ ํด์ฃผ๋ Hook ์ด๋ค.
๐ useSelector ๋ ๋งค๊ฐ๋ณ์๋ก selector ํจ์ ๋ผ๊ณ ํ๋ ๋จ์ผ ํจ์๋ฅผ ํ์ฉํ๋ค. selector๋ ์ ์ฒด Redux store state๋ฅผ ์ธ์๋ก ์ฌ์ฉํ๊ณ state์์ ์ผ๋ถ ๊ฐ์ ์ฝ๊ณ ํด๋น ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํ๋ ํจ์์ด๋ค.
const counter = useSelector((state) => state);
console.log(counter);
์ฐ๋ฆฌ๊ฐ ๋ง๋ counter๋ผ๋ reducer์ state๋ฅผ ํ์ธํ ์ ์๋ค.
์ด๋ ๊ฒ useSelector
์ ๋งค๊ฐ๋ณ์๋ก ํจ์๊ฐ ๋ค์ด๊ฐ๋๋ฐ, ์ด ํจ์์ ์ธ์๋ ํ์ฌ Redux store์ ์กด์ฌํ๋ ๋ชจ๋ reducer ์ธ ๊ฒ์ด๋ค.
counter๋ผ๋ reducer์ ์ ๊ทผํ๋ ค๋ฉด ๋ค์๊ณผ ๊ฐ์ด ํ๋ฉด ๋๋ค.
const counter = useSelector((state) => state.counter);
console.log(counter);
store.subscribe()
๋ฅผ ํธ์ถํ์ฌ store์ ๋ณ๊ฒฝ์ฌํญ์ ํ์ธํ ์ ์์ผ๋ฏ๋ก ๋ชจ๋ ์ปดํฌ๋ํธ์ ์ด๋ฌํ ์ฝ๋๋ฅผ ์์ฑํ ์ ์์ง๋ง ๊ทธ๋ด ํ์๊ฐ ์๋ค.
๋คํํ๋ useSeletor
๋ ์๋์ผ๋ก redux store๋ฅผ subscribe ํ๋ค. ๊ทธ๋ฌ๋ฉด action์ด dispatch ๋ ๋๋ง๋ค selector ํจ์๊ฐ ๋ค์ ํธ์ถ๋๋ค.
selector์์ ๋ฐํ๋ ๊ฐ์ด ๋ง์ง๋ง ์คํ๋์์ ๋์ ๋ฌ๋ผ์ง๋ฉด useSelector
๋ ์ปดํฌ๋ํธ๋ฅผ ์๋ก์ด ๋ฐ์ดํฐ๋ก ๋ฆฌ๋ ๋๋ง ํ๋ค. ์ปดํฌ๋ํธ์์ ํ ๋ฒ๋ง useSelector()
๋ฅผ ํธ์ถํ๋ฉด ๋๋จธ์ง ์์
์ redux๊ฐ ์์์ ์ํํ๋ค.
๐ dispatch : Action ๊ฐ์ฒด๋ฅผ reducer๋ก ๋ณด๋ด๋ ์ ๋ฌ์ ํจ์
๐ dispath๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด์๋ useDispath()๋ผ๋ Hook์ ์ด์ฉํ๋ค.
Redux store์ ๋ฐ์ดํฐ๋ฅผ ์ปดํฌ๋ํธ๋ก ์ฝ์ด์ค๋ ๋ฐฉ๋ฒ์ useSelector()
์ด๋ค.
๊ทธ๋ฆฌ๊ณ ์ปดํฌ๋ํธ์์ store๋ก action์ ์ ๋ฌํ๋ ๋ฐฉ๋ฒ์ useDispatch()
์ด๋ค!
๋ฐ๋ผ์ action์ dispatchํด์ผ ํ๋ ๋ชจ๋ ๊ตฌ์ฑ์์์์ const dispatch= useDispatch()
๋ฅผ ํธ์ถํ ํ ํ์์ ๋ฐ๋ผ dispatch(์ผ๋ถ ์ก์
)๋ฅผ ํธ์ถํ ์ ์๋ค.
const dispatch = useDispatch();
...
dispatch({ type: "PLUS" });
[Redux์ ํ๋ฆ]
1. View ์์ ์ก์ ์ด ์ผ์ด๋๋ค.
2. dispatch ์์ action์ด ์ผ์ด๋๊ฒ ๋๋ค.
3. action์ ์ํ reducer ํจ์๊ฐ ์คํ๋๊ธฐ ์ ์ middleware๊ฐ ์๋ํ๋ค.
4. middleware ์์ ๋ช ๋ น๋ด๋ฆฐ ์ผ์ ์ํํ๊ณ ๋๋ค, reducer ํจ์๋ฅผ ์คํํ๋ค.
5. reducer ์ ์คํ๊ฒฐ๊ณผ store์ ์๋ก์ด ๊ฐ์ ์ ์ฅํ๋ค.
6. store์ state์ subscribe ํ๊ณ ์๋ UI์ ๋ณ๊ฒฝ๋ ๊ฐ์ ์ค๋ค.
- store :
store
๋ ๋ฐ์ดํฐ๋ฅผ ๋ฃ๋ ๊ณต๊ฐ์ผ๋กยstate
๋ฅผ ๋ฃ๋๋ค๊ณ ๋ณด๋ฉด ๋๋ค.ยcreateStore
๋ยreducer
๋ฅผ ๋งค๊ฐ๋ณ์๋ก ์๊ตฌํ๋ค. ๊ฒฐ๊ณผ๊ฐ์ยgetState()
๋ฉ์๋๋ฅผ ํตํด ์ถ๋ ฅ ํ ์ ์๋ค.- reducer : reducer๋ย state๋ฅผ ๋ณ๊ฒฝ ์ํค๋ ํจ์๋ก ์ฌ์ฉ์๊ฐdispatch๋ฅผ ํตํด ๋ณด๋ด๋ action ๊ฐ์ฒด๋ฅผ ํตํดย state๊ฐ๋ค์ ๋ณ๊ฒฝํ๋ค. number, array, object๋ฑ ์ํ๋ ๋ฐ์ดํฐ๋ฅผ ์ด๊ณณ์์๋ง ๋ณ๊ฒฝํ๋ฉฐ, ๋ณ๊ฒฝํ๋ ๊ฐ์ย action ๊ฐ์ฒด๋ฅผ ํตํด ๊ตฌ๋ถํ์ฌ ์ฒ๋ฆฌํ๋ค.ย reducer์ ์ฐ์ฐ์ด ๋๋๊ณ returnํ๋ ๊ฐ์ด ํ์ฌ์ ์ดํ๋ฆฌ์ผ์ด์ ย state๊ฐ์ด ๋๋ฉฐย store์ ๋ฑ๋ก๋๋ค.
- action :
store
์ ๋ฑ๋กํ๋ยreducer
๋ฅผ ์ํตํ๊ธฐ ์ํ ๋ฐฉ๋ฒ์ผ๋กยaction
์ ์ฌ์ฉํ๋ค.ยaction
์ type์ด๋ผ๋ key๋ฅผ ํ์๋ก ๊ฐ๋ Objectํํ์ ๋ฐ์ดํฐ๋ค.ยaction
์ ๊ทธ๋ผยreducer
์ ์ด๋ป๊ฒ ๋ณด๋ด์ง๊น?ยdispatch
๋ฉ์๋๋ฅผ ํ์ฉํ๋ค.ยdispatch
๋ยstore
์์ ์ ๊ณตํ๋ ๋ฉ์๋๋กยreducer
๋ฅผ ๋์์ํค๊ฒ ๋ง๋ ๋ค.