#. redux-saga๋?
redux-saga(์ดํ ๋ฆฌ๋์ค ์ฌ๊ฐ)๋ redux์ ๋ฏธ๋ค์จ์ด๋ก์ ๋น๋๊ธฐ ๋์์ ์คํ ํ ์ ์๊ฒ ํ๋ค. ์ฆ ์ธ๋ถ์์ ๋ฐ์ดํฐ ๊ฐ์ ธ์ค๊ธฐ(fetch)์ ๊ฐ์ ๋น๋๊ธฐ ๋์๋ค์ ๋ ํจ์จ์ ์ผ๋ก ์คํํ๊ณ , ์ฝ๊ฒ ๊ด๋ฆฌํ๊ธฐ ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๋ค.
์๋ฅผ ๋ค์ด, redux์ action์ด ๋ฐ์ํ๋ฉด reducer๊ฐ ์ก์
์ ์ฒ๋ฆฌํ๊ธฐ ์ ์ ๋น๋๊ธฐ ์์
์ ์์ฒญํ๊ฑฐ๋ ๋ค๋ฅธ ์ก์
์ ๋ฐ์์ํค๋ ๋ฑ ๋ค์ํ ์์
์ ํ ์ ์๋๋ก ๋ฏธ๋ค์จ์ด๋ก ๋์ํ๋ค.
#. redux-saga ์ฌ์ฉํ๋ ์ด์
1) ์ฃผ๋ก ์๋ฒ์ ๋น๋๊ธฐ ์์ฒญ์ ํ ๋ ์ปดํฌ๋ํธ์์ ์์ฒญํ์ง ์๊ณ Saga์์ ๋ชจ์์ ๊ด๋ฆฌํด์ฃผ๊ธฐ ์ํด ์ฌ์ฉํ๋ค.
์ปดํฌ๋ํธ์์ ์ง์ async/await ๋ฌธ๋ฒ์ ํตํด ์๋ฒ์ API ์์ฒญ์ ๋ณด๋ด๋๊ฒ ๊ฐ์ฅ ๊ฐํธํ๋ค. ํ์ง๋ง ์ด๋ฌํ ์ฝ๋๊ฐ ๋ง์์ง์๋ก ์ปดํฌ๋ํธ์ ๋น์ฆ๋์ค ๋ก์ง์ด ์ง์ ์์กดํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์์ง๊ณ , ์ปดํฌ๋ํธ๋ ๋ณต์กํด์ง๊ณ ์ฌ์ฌ์ฉ์ฑ์ด ๋จ์ด์ง๋ค. ๋ฐ๋ผ์ ๋ฆฌ๋์ค ์ฌ๊ฐ๋ฅผ ํตํด
2) redux(์ดํ ๋ฆฌ๋์ค)์ ์ก์ ์์ฑ์์ reducer์ ์์์ฑ์ ์ ์งํ๊ณ ์ฌ์ด๋ ์ดํํธ(์: ๋น๋๊ธฐ API ์์ฒญ)๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ์ํด ์ฌ์ฉํ๋ค.
๋ฆฌ๋์ค์ ์คํ ์ด ์์ ์ ์ฅ๋ ์ํ(state)๋ ์ค์ง ์ฝ๊ธฐ ์ ์ฉ์ด๋ค. ์ํ๋ action์ ์ํด์๋ง ๋ณ๊ฒฝ๋๊ณ , ์ํ๊ฐ ์ด๋ป๊ฒ ๋ณ๊ฒฝํ ์ง์ ๋ํด reducer ํจ์๊ฐ ์ด์ ์ ์ํ์ ์ก์ ์ ์ธ์๋ก ๋ฐ์ ๋ณ๊ฒฝ๋ ์ํ๋ฅผ ๋ฆฌํดํ๋ค. ๋ฐ๋ผ์ ์ด๋ฌํ action๊ณผ reducer์ ์ฌ์ฉ ์ ์ ์ด์ธ์ ๋ถ์์ ์ธ ์ด๋ฒคํธ๋ค์ ๋ฆฌ๋์ค ์ฌ๊ฐ๋ฅผ ํตํด ์ฒ๋ฆฌํ๋ ๊ฒ์ด ๋ ์ ํฉํ๋ค.
โ ๊ฒฐ๋ก ) ๋ฆฌ์กํธ ์ปดํฌ๋ํธ์ ๋ฆฌ๋์ค์ ์ก์ ์ ๋ชจ๋ ์์ํ๊ฒ ์ ์งํ๋ฉด์ ๋น์ง๋์ค ๋ก์ง๋ง ๋ฐ๋ก ์ฒ๋ฆฌํ๊ธฐ ์ํด ๋ฆฌ๋์ค ์ฌ๊ฐ๋ฅผ ์ฌ์ฉํ๋ค.
'๊ฐ๋ฐ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์๋ฐ์คํฌ๋ฆฝํธ ๋๊ธฐ์ ๋น๋๊ธฐ (0) | 2022.09.29 |
---|---|
React + Redux(Redux-toolkit) + Redux-saga (3) | 2022.09.28 |
mysql ํน์ ๋ฌธ์ ๋ฐ์ดํฐ ๊ฒ์ (0) | 2022.09.22 |
ios ์ฌํ๋ฆฌ, ํฌ๋กฌ heigth: 100vh ์๋ ๋ (feat. ์ด๊ฒ์ด ํฌ๋ก์ค ๋ธ๋ผ์ฐ์ง์ธ๊ฐ) (0) | 2022.04.14 |
iwinv ์๋ฒ์ mysql ํ์ผ ์ฎ๊ธฐ๊ธฐ ( feat. mysql ๋ฐฑ์ ) (0) | 2022.03.29 |