ํ๋ก์ ํธ๊ฐ ๋น์ด ์์ต๋๋ค. ์ด์ ์ ๋ฐ์ ์ ๋ณด์ ์ ์๊ฐ์ ๊ฒฐํฉํ์ฌ [email protected]์ ๋ํ ๊ณ ๋ ค ์ฌํญ์ ๋์ดํ๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค. ํ ๋ก ์ ์ค์ ๊ฒ์ ํ์ํฉ๋๋ค.
ts์ ๋ํ ๊ธฐ๋ณธ ์ง์์ ์ด๋ป์ต๋๊น?
๋ชจ๋ธ๋ง์ ํด์ ํ ๋ ์ฌ์ฉํ์ง ์๋ ์ํ ๋ฐ์ดํฐ๋ฅผ ํ๊ดดํ๊ธฐ ์ํด ๊ฐ์๊ธฐ๋ฅผ ์ ๋ฌํ๋ ๊ฒ์ ์ง์ํ๋ ๊ฒ์ ๊ณ ๋ คํ์ญ๋๊น? https://github.com/dvajs/dva/issues/769
๋ก๋ํธ๊ทธ๋ก ์ด๋ฆ์ ๋ฐ๊พผ dva-cli๋ ์ด๋ป์ต๋๊น? ๊ฐ๋ ์ด ํผ๋๋์ง ์๋๋ก ํ์ญ์์ค.
๊ฐ์ธ์ ์ผ๋ก, ๋๋ ts์ ๋ํ ๊ธฐ๋ณธ ์ง์์ ๋์ํ์ง ์์ต๋๋ค. ํ๋ ์์ํฌ๋ ๋ค๋ฅธ ๊ด๋ จ ์๋ ๊ธฐ์ ์คํ์์ ๋ฐ์ธ๋ฉ์ ํด์ ํ๊ณ ์์ํ๊ฒ ์ ์งํด์ผ ํ๋ฉฐ ์คํ๋ ค ๋ ์ํํด์ผ ํฉ๋๋ค. ์๋ฅผ ๋ค์ด ๋ชจ๋ธ ๋ง์ดํธ ํด์ ์ ์ํ ๋ฌธ์ ๋ ๋ค์๊ณผ ๊ฐ์ด ์ํํ ์๋ ์์ต๋๋ค. ๊ธฐ์กด api, react-router react-router-dva์ ๊ฐ์ ๋ ๋ฆฝ๋ ์ปดํฌ๋ํธ๋ก ๋ถ๋ฆฌํ ๊ณํ์ด๋ฉฐ, rn์ฉ react-navigation-dva๋ ์์ฑํ ์ ์์ต๋๋ค.
dva.use(reselect)
์ ๊ฐ์ ํ๋ฌ๊ทธ์ธ ํํ๋ก๋ ์ง์ํ ์ ์๋ ์ต์ ํ ๋ฐฉ์๋ ์์ผ๋ฉฐ ์ต์คํ๋ ์ค ๋ฏธ๋ค์จ์ด ๋ฉ์ปค๋์ฆ๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก ์ ์ ํ๋ฌ๊ทธ์ธ๋ง ๋ด์ฅํ๊ณ ๋๋จธ์ง๋ ๋ณ๋๋ก ์ง์ํฉ๋๋ค. , ์ฌ์ง์ด ์ฌ๊ฐ๋ ๊ฐ๋ฅํฉ๋๋ค.
@nihgwu antd ์ ๋ง์ฐฌ๊ฐ์ง๋ก ts๋ก ์์ฑ๋์ด ์ฌ์ฉ์๋ฅผ ์ ํํ์ง ์๋๋ค๋ ๋ป์ผ๋ก, ํญ์ ์๋์ผ๋ก ๋๊ธฐํํ๊ณ ์ ํ ํ์ผ์ ๊ฒ์ํ ํ์๊ฐ ์๋ค๋ ์ฅ์ ์ด ์์ต๋๋ค.
ํ๋ฌ๊ทธ์ธ ์๋ฃจ์ ์ ๋์ํฉ๋๋ค. ๋ค์์ ์ํํ ์ ์์ต๋๊น?
view - dva-core - [ๆไปถ]
๊ทธ ์ค ํ์ฌ dva์ ํด๋นํ๋ ๋ถ๋ถ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
๋ง์ง๋ง ๋ ๊ฐ์ง๋ ํ๋ฌ๊ทธ์ธ์ ๋๋ค.
๋ทฐ์ ๋ฐ์ดํฐ ๊ฐ์ ๊ด๊ณ๋ฅผ ํํํ๋ ๋ฐ ์ค์ ์ ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก dva๋ฅผ ํฌ์ง์ ๋ํ ์ ์์ต๋๊น? ๋ทฐ๋ ์ด๋ค ํ๋ ์์ํฌ์ด๋ฉฐ ๋ฐ์ดํฐ ์์ค๋ ์ด๋ค ๋ฐฉ์์ผ๋ก ๋์ฒด ๊ฐ๋ฅํฉ๋๊น? ๊ทธ๋ฐ ๋ค์ 1.0์ผ๋ก ์ํํ๊ฒ ์ ๊ทธ๋ ์ด๋ํ๋ ค๋ฉด dva๋ฅผ dva-core์ saga์ ๊ธฐ๋ณธ ์กฐํฉ์ผ๋ก ์ ์ํด์ผ ํฉ๋๊น?
๊ธฐ๋ณธ ์บก์ํ๊ฐ ์ธ์คํด์ค ์ ํ์ ๋์คํจ์น ์ ํ์ ์ง์ํ๋ ๋ฐ ํธ๋ฆฌํ์ง ๋ชจ๋ฅด๊ฒ ์ต๋๋ค.
dispatch({
type: model => model.product.loadAll,
})
๋ฌธ์์ด ์ธ์ฐ๊ธฐ๋ ๊ท์ฐฎ๊ณ ๋ค์์คํ์ด์ค ์์ฑ์ ์์ด๋ฒ๋ฆฌ๋ ๊ฒฝ์ฐ๊ฐ ๋ง๊ณ , ๋๋กญ๋ค์ด ํ๋กฌํํธ๊ฐ ์์ผ๋ฉด ์ฌ๊ตฌ์ฑํ๋ ๊ฒ๋ ํธ๋ฆฌํฉ๋๋ค~
์ํ์ ๋ชจ๋ ๋ฐ์ดํฐ์ ๋ํด ๊ธฐ๋ณธ์ ์ผ๋ก ๊ฐ์๊ธฐ ์ธํธ๋ฅผ ์ ๊ณตํ ์ ์๋์ง ๋ชจ๋ฅด๊ฒ ์ต๋๋ค.
๋๋ถ๋ถ์ ์๋๋ฆฌ์ค์์๋ ํ๋์ ๊ฐ์ ํ ๋นํ ์ ์๋ ๋ฆฌ๋์๋ฅผ ์๋์ผ๋ก ์์ฑํด์ผ ํ๋ฏ๋ก ๊ธฐ๋ณธ์ ์ผ๋ก ๊ธฐ์ฑํ์ ๋จ์ผ ํ๋ ์ธํธ ๋ฐฉ๋ฒ์ ์ ๊ณตํ ์ ์๋ค๋ฉด ๊ฝค ์ข์ ๊ฒ์
๋๋ค.
๋ฆฌ๋์๋ฅผ ํธ๋ฆฌ๋ก ๊ตฌํํ ์ ์๋์?์ง๊ธ์ฒ๋ผ ns split์ ๋ก์ง์ ํํํ๊ฒ ํ๊ธฐ ์ํด ๊ฐ์ ๋ก ์ ์ฉ๋ฉ๋๋ค.๋ชจ๋ธ์ ๋ฆฌ๋์์ ๋ฃจํธ์ ํด๋นํ๊ณ , ์๋์ ๋งค๋ฌ๋ ค ์๋ ๋ฆฌ๋์๊ฐ ๋๋ฌด ๋ง์ต๋๋ค.
@xufei ์ฌ๊ฐ๊ฐ ํต์ฌ์ด ๋์ด์ผ ํ๋ค๊ณ ์๊ฐํ๋๋ฐ ์ฌ๊ฐ๊ฐ ์๋ ํ์ฌ์
@xufei ์ฃ์กํฉ๋๋ค ์ ๋ ts๋ก ์ฐ๋๊ฑฐ ์ฐธ๊ณ ํ์๋ฉด
@sorrycc Separating saga ๋๋ ์๋ฅผ ๋ค์ด dva์ ํต์ฌ์ด redux + redux-saga์ธ ๊ฒ์ ๋ง์ง๋ง ๊ตฌํ์ ๊ด์ ์์ ๋ณด๋ฉด ์ฝ๋ฐฑ ํํฌ๋ฅผ ํตํด ํ๋ฌ๊ทธ์ธ์ผ๋ก ๋ถ๋ฆฌํ ์ ์๋ค.
Immutable.js๋ฅผ ์ง์ํ ์ ์์ต๋๊น?
Immutable.js ์ง์, Immutable.js๋ ์ฑ๋ฅ ์ต์ ํ์์ ์ค์ํ ์ญํ ์ ํฉ๋๋ค.
๋ก๋ํธ๊ทธ ํจํค์ง์ ์ฑ๋ฅ์ ๋๋ฌด ๋ง์ด ์๋ชจํฉ๋๋ค. ์ต์ ํํ ์ ์๋์ง ํ์ธํ์ญ์์ค. ๊ฐ๋ฅํ๋ฉด ์ต๋ํ ์ต์ ํํ์ญ์์ค. ์ด์ ์๋ฒ๊ฐ ํ๋ก์ ํธ๋ฅผ ๋น๋ํ๊ธฐ ์ ์ ๋ค๋ฅธ ์ปจํ ์ด๋๋ฅผ ์ค์งํด์ผ ํฉ๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ์๋ฒ๊ฐ ์ค๋จ๋ฉ๋๋ค.
Immutable.js๋ ๋ ์ด์ ์ฌ์ฉ๋์ง ์์ต๋๋ค. lodash์ Spread ์์ ์ ๊ฒฐํฉํ๋ฉด ๋ถ๋ณ ํจ๊ณผ๋ฅผ ์ป์ ์๋ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ lodash๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ด์ฅ๋์ด ์์ต๋๋ค.
์ฌ์ค dva 1.x์ ๊ฐ๋ฐ ๊ฒฝํ์ ์ด๋ฏธ ๋งค์ฐ ์ข์๋ฐ Immutable.js, split saga, native support ts ์ง์ ์ฌ๋ถ์ ๋น์ทํ๊ณ , ๋ถํ์ํ๋ค๊ณ ๋๋ผ๊ณ , ๋ชจ๋ ๊ฐ๋ฐ์์ ์๊ธฐ์ ์ ์ํ๊ณ , ๋ณ๋ก ์ค์ ๊ฐ๋ฐ ํจ์จ์ฑ๊ณผ ๊ฒฝํ์ ์ํฅ์ ๋ฏธ์นฉ๋๋ค.
๊ฐ์ธ์ ์ผ๋ก dva 2.x์์ ๊ณ ๋ คํด์ผ ํ 4๊ฐ์ง ์ฌํญ์ด ์์ต๋๋ค.
์๋น์ค ๊ณ์ธต์ ์ต์ ํ ์ฌ๋ถ, ๋ชจ๋ธ๋ก ์ถ์ถํ ์ ์๋์ง, ํตํฉ๋ ๋ฐฉ์์ผ๋ก ํจํค์งํ๋์ง ์ฌ๋ถ๋ ๊ธฐ๋ณธ์ ์ผ๋ก request
์ ๊ฒฝ ์ฐ์ง ์๊ณ ๊ธฐ๋ณธ์ ์ผ๋ก ๋คํธ์ํฌ ์์ธ ์ฒ๋ฆฌ๋ฅผ ์ ๊ณตํ๋ฉฐ ์ด์ ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ํฉ๋๋ค. request.js
์ง์ ์ฐ๋ ค๋ฉด;
๋ทฐ ๋ ์ด์ด์ ์ดํํธ ์ฝ๋ฐฑ ๋ฌธ์ ๋ก ๋น์ฆ๋์ค ๋ก์ง์ ์์ ํ ๋ชจ๋ธ ๋ฐ์ดํฐ๋ก ๋ถ๋ฆฌํ์ฌ ์ดํํธ๋ก ์ฒ๋ฆฌํ๋ ๊ฒ์ ๋นํ์ค์ (๋๋ฌด ๋ฒ๊ฑฐ๋ก์)์ด๋ฏ๋ก ์ด ๋ถ๋ถ์์ ์ข ๋ ์ธ๋ จ๋ ์๋ฃจ์ ์ด ํ์ํฉ๋๋ค.
๊ทธ๊ฒ์ dva์ ์ฃผ๋ณ ์ปค๋ฎค๋ํฐ๋ฅผ ๊ตฌ์ฑํ๋ ๊ฒ์ ๋๋ค. ํ์ฌ ์ค์บํด๋ฉ์ ์ ํ์ ์์ ๊ฐ ํ๋ถํ์ง๋ง ๋ ๋ง์ ๊ตฌ์ฑ์ด ํ์ํฉ๋๋ค. ๋ชฉํ๋ ๊ฐ๋ ๋๋ ๋ฐ์ ์ปค๋ฎค๋ํฐ ์์ฒด์ ๋ฆฌ์์ค ์์ค์ ๋๋ฌํ๋ ๊ฒ ๊ฐ์ต๋๋ค.
๋น๋ ๋๊ตฌ, ์ฑ๋ฅ, ๊ธฐ๋ฅ ๋ฑ์ ํฅ์(ํ์ฌ ๋ชจ์)์ ์ฌ์ ํ โโ์ฝ๊ฐ ๋ฒ๊ฑฐ๋กญ์ต๋๋ค.
์ ์๊ฒ ๊ฐ์ฅ ์ฐ๋ ค๋๋ ๊ฒ์ router
์ ๋ถ๋ฆฌ์
๋๋ค. dva
์๋ redux + redux-saga
๋ง ํฌํจํ๋ฉด ๋๋ค๊ณ ์๊ฐํฉ๋๋ค. redux
์ปค๋ฎค๋ํฐ๋ ๊ฐ๋ฅํ ํ ์ ๊ฒ ํ๋ ๊ฒ์ ์นํธํ๋ฏ๋ก 1.x ํจํค์ง react-router
๋ฐ fetch
๋ ๋ฌผ๋ก ์์์ ์ธ๊ธํ Immutable
๋ ๋ถํ์ํ๊ฒ ๋๊ปด์ง๋๋ค. ์ด๊ฒ์ ๊ฐ๋ฐ์์ ์ทจํฅ์ ์ํ๋ค ์ ์ง์๋ก์ ํธํฅ๋์ด์๋ ์ ๋๋ค ๊ฐ๋ฐ์์ ์ทจํฅ์ ๋ฐ๋ผ ํ๋ฌ๊ทธ์ธ ํํ๋ก ์ง์๋ ์ ์๋ค ์๋น์ค ๊ณ์ธต์ ๋ฌธ์ ๋ ์๋ค ํ์์ ๋ฐ๋ผ , plugin
์ง์ ์์ฑํ ์ ์์ต๋๋ค. dva-core
ํฌํจ๋์ด์๋ ์ ๋ฉ๋๋ค.
@nihgwu ๋ผ์ฐํฐ๋ฅผ ์ถ์ถํ๋ ๋ชฉ์ ์ ๋ฌด์์ ๋๊น?
@nikogu๋ ๋๋ฌด ๋ง์ ์ผ์ ํ๊ณ ์ด๋ณด์๋
๋ผ์ฐํฐ๋ฅผ ์ ๊ฑฐํ๋ ๋ชฉ์ ์ ๋ฌด์์ ๋๊น?
@nikogu
ํ์ฌ dva์ ์ ์ฉ ๋ฒ์๋ ๋ค์ ์ข๊ณ , ์์ฐ์ค๋ฝ๊ฒ view๋ฅผ ํฌํจํ๋ react ์ปค๋ฎค๋ํฐ์ ๊ฐํ๊ฒ ์ฐ๊ฒฐ๋์ด ์๊ณ react-router์๋ ๊ฐํ๊ฒ ์ฐ๊ฒฐ๋์ด ์์ต๋๋ค. ๊ทธ๋ฌ๋ ๊ทธ๊ฒ์ ์ฌ์ฉํ ํ์ ๋๋ ๋ฌด์ ๋ค์ค ํ์ด์ง ์์ฉ ํ๋ก๊ทธ๋จ๊ณผ ๊ฐ์ด ๋ผ์ฐํฐ๊ฐ ํ์ํ์ง ์์ ๊ณณ, react-native์ ๊ฐ์ด react-router๋ฅผ ์ ์ฉํ ์ ์๋ ๊ณณ, node์ ๊ฐ์ด react๊ฐ ํ์ํ์ง ์์ ๊ณณ์ ๋ฐ๊ฒฌํ์ต๋๋ค. , ์ ์ ๋ฐ ์ ํ๋ฆฟ.
๋๋ dva๊ฐ ๋ ๋ง์ ๊ฒ์ ํ ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
@nikogu๋ ๋ผ์ฐํฐ๊ฐ ๋ค๋ฅด๊ธฐ ๋๋ฌธ์ ๋ผ์ฐํฐ๋ฅผ ๋ฉ๋ฆฌํฉ๋๋ค.์๋ฅผ ๋ค์ด RN์์๋ react-navigation์ ์ฌ์ฉํ ์ ์๊ณ react-navigation์ ์น๋ ์ง์ํ๋ฏ๋ก ํ๋ฌ๊ทธ์ธ์์ ์๋ฒฝํ๊ฒ ์ง์ํ์ฌ ๋ ๋์ ์ฌ์ฉ์ ์ ์๋ฅผ ๋ฌ์ฑํ ์ ์์ต๋๋ค.
dva๋ ๋ ธ๋์ ๊ธฐ์กด API๋ฅผ ์ฌ์ฉํ์ฌ ์น ์๋ฒ์ ๊ธฐ๋ณธ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ express์ ๊ฐ์ ์์ ํ ์น ๊ฐ๋ฐ ํ๋ ์์ํฌ ์ธํธ๋ฅผ ์ ๊ณตํ๊ธฐ ๋ณด๋ค๋ redux ๋ฐ saga ์ฝ๋์ ๋ก์ง์ ์๋ก์ด ํํ๋ก ๊ตฌ์ฑํ๋ ๊ฒ์ผ๋ก ์๊ณ ์์ต๋๋ค. ๋ณธ๋ฌธ, ์ฟ ํค ๋ฐ ๋ฏธ๋ค์จ์ด๋ฅผ ํตํด ์ฌ์ฉ์ ์ ์ํ ์ ์๋ ํ ํ๋ฆฟ ์์ง์ ์ ํํฉ๋๊น?
์์ ํ ์๋ฃจ์
์ด ๋ง์์ ๋ค๋ฉด dva-ant = dva-core + dva-plugins
๊ตฌํํ์ฌ ์ฌ์ฉํ ์ ์์ต๋๋ค.
dva์ ์กฐํฉ์ redux์ saga์ ์กฐํฉ์ด์ด์ผ ํฉ๋๋ค. ์๋ํ๋ฉด ์ด ๋ ๊ฐ์ง๋ ๋ฐ์ดํฐ ์ํ ํ๋ฆ์ ํต์ฌ์ด๊ณ ๋๋จธ์ง๋ ๋ฐ์ดํฐ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๊ตฌ์ถ๋ ์ฃผ๋ณ ์ฅ์น๋ก๋ง ๊ฐ์ฃผ๋ ์ ์๊ณ ํ๋ฌ๊ทธ์ธ์ด๋ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ผ๋ก ์ง์๋ ์ ์๊ธฐ ๋๋ฌธ์ ๋๋ค. ์ฐ๋ฆฌ๋ Express์ Django๋ฅผ ๋น๊ตํ ์ ์์ต๋๋ค. ๋ ํ๋ ๊ฒ๊ณผ ๋ ๋ง์ด ํ๋ ๊ฒ์ ์ ํ์ ์ธ ์ฐจ์ด์ ์ ๋๋ค. ์ด๋ค ์ฌ๋๋ค์ ํฌ๊ณ ์์ ํ ๊ฒ์ ์ข์ํ์ง๋ง js ์ปค๋ฎค๋ํฐ๋ ์์ง๋ง ์๋ฆ๋ค์ด ๊ฒ์ ์กด์คํฉ๋๋ค.
redux๋ฅผ ์ง์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ dva๋ฅผ ์ฌ์ฉํ๋ ๊ฐ์ฅ ํฐ ์ด์ ๋ dva๊ฐ redux์ ์ฝ๋ ๊ตฌ์กฐ์ ๋ก์ง์ ๋จ์ํํ๊ณ ์์ฐ ํจ์จ์ฑ์ ๋์ผ ์ ์๊ธฐ ๋๋ฌธ์ด๋ฉฐ, ์ด๊ฒ์ด redux ๊ธฐ๋ฐ dva์ ํต์ฌ์ด๊ธฐ๋ ํฉ๋๋ค.
๋งน๋ชฉ์ ์ผ๋ก ๋ ๋ง์ด ํ๋ฉด dva์ ์์ฉ ์๋๋ฆฌ์ค๋ ์ ์ ๋ ์ข์์ง ๊ฒ์ ๋๋ค.์๋ฅผ ๋ค์ด react-router๋ RN์์ ์ฌ์ฉํ ์ ์์ต๋๋ค(v4๋ ์ด๋ฏธ ์ง์ํ์ง๋ง ๋งค์ฐ ๊ธฐ๋ณธ์ ์), RN๋ fetch์ ํจ๊ป ์ ๊ณต๋๋ฉฐ ๋ค๋ฅธ ๊ฐ๋ ฅํ ๋ฐ์ธ๋ฉ์ด ์์ต๋๋ค. . ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ๋ํ ์ ๊ทธ๋ ์ด๋ ์ข ์์ฑ ๋ฌธ์ ๋ฅผ ์ผ์ผํฌ ๊ฒ์ ๋๋ค. ์ฌ์ ํ ๋ฐ์ ๋ผ์ฐํฐ์ ๋๋ค. V4๋ RN์ ์ง์ํ์ง๋ง dva๋ ์ฌ์ ํ V2์ ๋๋ค. dva๊ฐ ๋ฐ์ ๋ผ์ฐํฐ๋ฅผ ์ ๊ทธ๋ ์ด๋ํ ๋๊น์ง ๊ธฐ๋ค๋ ค์ผ ์ฌ์ฉํ ์ ์์ต๋๋ค. ํ๋ฌ๊ทธ์ธ์ธ ๊ฒฝ์ฐ ์์ ๋ ๋ฆฝ์ ์ผ๋ก ์ ๊ทธ๋ ์ด๋ํ๋ฉด ์ด๋ฌํ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ง ์์ต๋๋ค. NS
์์ dva-core๊ฐ ์๋ฏธํ๋ ๋ฐ๋ ์์ ์ฝ์ด๋ฅผ dva-core๋ก ์ทจ๊ธํ๊ณ ์ฌ๊ธฐ์ ๋ผ์ฐํฐ ๋ฑ์ ๊ฐ์ ธ์จ ๋ค์ ์ค๊ฐ ๋ฐ ๋ฐฑ์คํผ์ค๋ฅผ ์ํ ํ์ฌ์ ๋ด๋ถ ํตํฉ ๋ฒ์ ๊ณผ ๊ฐ์ ๋ช ๊ฐ์ง ๊ธฐ๋ณธ ํตํฉ ์ฒด๊ณ๋ฅผ ๊ฐ๋ฐํ๋ ๊ฒ์ ๋๋ค. , H5์ ๊ฒฝ์ฐ ์๊ท๋ชจ ํ๋ก๊ทธ๋จ, ์๋ฒ ์ธก ๋ ๋๋ง ๋ฑ
2:00:
1. ์ค์ ๊ฐ๋ฐ์์ ๋น์ฆ๋์ค ๋ก์ง์ด ๋ชจ๋ธ์ ๊ตฌํ๋์ด ์๋๋ฐ ํ์ผ์ด ๋๋ฌด ํฐ๋ฐ ์๋๋ฐฉ๊ณผ ์๋น์ค์ ๊ด๊ณ๋? ์๋น์ค ๋๋ ์์ฒญ ๋ด์ฅ ๊ฐ๋ฅ
2. react-router๋ฅผ ์์คํ
์์ฒด ํ๋ฌ๊ทธ์ธ์ผ๋ก ๋ณ๊ฒฝํ๊ฑฐ๋ ์ข
์์ฑ์ ํด์ ํ๋ ๊ฒ์ด ๋ชฉ์ ์
๋๋ค.
2.0์ ์ธ์ ์์๋๋์?
Pluggable ssr ์๋ฃจ์ ์ ๋ผ์ฐํฐ์ ๊ด๋ฆฌ๋ฅผ ์ถ์ํํฉ๋๋ค. ์๋ฒ ์ธก์ด ์ฒซ ๋ฒ์งธ ๋ผ์ฐํ ์์ฒญ์ ์ธ์ํ๊ณ ๊ณต์ dva()๋ฅผ ์ฌ์ฉํ์ฌ ์ํ ํธ๋ฆฌ๋ฅผ ์ด๊ธฐํํ ์ ์์ต๋๋ค. dva๊ฐ ๊ณ์ ์ ๊ทธ๋ ์ด๋๋จ์ ๋ฐ๋ผ ์๋ฒ ๋ ๋๋ง์ด ์ฝํ๋ค๊ณ ๋๋๋๋ค. ์๋ก์ด ๊ธฐ๋ฅ์ ์ ์ฉ.
TypeScript ๋ฐ RN.๋ ๋์ ์ง์์ ๋ฐ๋๋๋ค
๋ค๋ฅธ ๊ฒ์ ์๊ฐํด ๋ณด์ธ์. ๊ธฐ๋ณธ namespace
์ ๊ณตํ์ธ์.
dva๋ฅผ ์ฌ์ฉํ๋ ๊ณผ์ ์์ ํญ์ reducer
์ ๋์ฌ๊ฐ ํ์ํ์ง ์๊ณ dva์ ํ์ฌ ๊ตฌํ์ด namespace
์ ๊ณตํด์ผ ํ๋ ๊ฒฝ์ฐ๊ฐ ์์ผ๋ฏ๋ก namespace
๋ default
(๋๋ global
, *
)์ด๊ณ model
์๋์ reducers
๋ ์ ๋์ฌ ์์
๊ฐ์ธ์ ์ผ๋ก ๋ช ๊ฐ์ง ์ฌํญ์ ์๊ฐํด ๋ณด์ญ์์ค.
redux-saga
์ ์์กดํ์ง ์์ผ๋ฏ๋ก ์ผ๋ถ ๊ธฐ๋ฅ(์: async/await ์ง์)์ ์ฝ๊ฒ ์ถ๊ฐํ ์ ์์ต๋๋ค.์ฐ๋ฆฌ๋ ์ต๊ทผ ๋ชจ๋ธ vuex
์ ๋ฐ๋ผ redux
์ด ๊ธฐ์ค์ : https://github.com/d-band/yax
์๋ฒ์ธก์์ ๋ ๋๋ง์ด ๊ฐ๋ฅํ๊ณ ํ๋ก ํธ์๋์ ๋ฐฑ์๋๋ฅผ ํจ๊ป ์ธ ์ ์๋ ๊ฒ์ ์ถ์ฒํฉ๋๋ค!
๊ฒฝ๋ก ๋๋ ํ ๋ฆฌ์ ์ด๋ฆ์ ์ค์ ํ ์ ์์ต๋๊น? ์๋ฅผ ๋ค์ด ์ปจํ
์ด๋ ์ฌ์ฉ
์ฌ์ค, ๋๋ ๊ธฐ๋ฅ๋ณ๋ก ์นดํ๋ก๊ทธ๋ฅผ ๋๋๊ณ ๋ชจ๋ธ, ์๋น์ค ๋ฐ ์ปจํ
์ด๋๋ฅผ ํจ๊ป ๋ฃ๊ณ ์ถ์ต๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ์ฌ๋ฌ ์นดํ๋ก๊ทธ๋ก ์ด๋ํ๋ฉด ๋ง์์ ํ๋ฆ์ด ํ๊ดด๋ฉ๋๋ค. ์ญ๊ณ ํ ํญ์์ ์ด๋ฆฐ user.js๊ฐ ๋ฌด์์ธ์ง ์๊ธฐ ์ํด ์ด๋ฏธ user.jsx, user.model.js, user.service.js์ ๊ฐ์ด ์ด๋ฆ์ ์ง์ ํ์ต๋๋ค. user/model.js, service.js, container.js๋ฅผ ํฉ์นฉ๋๋ค.
@zheeeng ๊ณผ ๊ฐ์ ๋๋ ํ ๋ฆฌ ๊ตฌ์ฑ์ด ์ด์ ์ง์๋๋ฉฐ dva๋ ๋๋ ํ ๋ฆฌ ๊ตฌ์ฑ์ ์ ํ์ด ์์ต๋๋ค.
@xufei
@sorrycc
๋ชจ๋ธ๋ง์ ํด์ ํ ๋ ์ฌ์ฉํ์ง ์๋ ์ํ ๋ฐ์ดํฐ๋ฅผ ํ๊ดดํ๊ธฐ ์ํด ๊ฐ์๊ธฐ๋ฅผ ์ ๋ฌํ๋ ๊ฒ์ ์ง์ํ๋ ๊ฒ์ ๊ณ ๋ คํ์ญ๋๊น?
์๋ ์ ์ด๋ ๋๋ฌด ๋ฒ๊ฑฐ๋กญ์ต๋๋ค. GC ์ธํธ๋ฅผ ์ง์ ๊ตฌํํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
pathToRegexp๋ฅผ ์ ๊ทธ๋ ์ด๋ํ์ญ์์ค. ๊ตฌ๋ฌธ ๋ถ์ ๋ฐ ์ปดํ์ผ ๋ฐฉ๋ฒ์ ์ง์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
ํฉ์๋ ๊ตฌ์ฑ๋ณด๋ค ๋ซ๊ณ ๋ค๋ฅธ ํ๋ก์ ํธ๋ ๊ธฐ์ ์คํ๊ณผ์ ๊ฒฐํฉ์ ์ค์ ๋๋ค.
ํจ๊ณผ ์ฌ์ ์ด ๋๋ฌด ๋ฌด๊ฒ๊ณ ๋ชจ๋ธ ํ์ฅ์ ์์ด๋์ด๊ฐ ์๋นํ ์ข์ต๋๋ค.
@nihgwu๋ ๊ฐ์ธ์ ์ผ๋ก "
@sorrycc dva 2.0์ ์ต์ ๋ฆด๋ฆฌ์ค ๊ณํ์ด ์์ต๋๊น?
dva-cli๊ฐ TypeScript ์์ฉ๊ตฌ๋ฅผ ์์ฑํ๋๋ก ์ ํํ ์ ์๊ธฐ๋ฅผ ๊ฐ๋ ฅํ ๋ฐ๋๋๋ค.
dva-core๋ ์ด๋ฏธ WeChat ์ ํ๋ฆฟ์์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
@yautah๊ฐ ์๋ ํ์ต๋๊น? ๋น์ ์ด ๊ทธ๊ฒ์ ์๋ํ ํ ๊ณํ์ ๊ณต์ ํ ์ ์์ต๋๋ค.
dva-core๋ redux ๋ฐ์ดํฐ ์คํธ๋ฆผ ์ฌ์บก์ํ๋ง ์ ๊ณตํ๋ฉด ๋๋ค๊ณ ์๊ฐํฉ๋๋ค.
์คํ์ผ๋ฌ์ค๋ฅผ ์ง์ํ๊ธฐ ์ํด dva-cli๋ฅผ ์ง์ํ๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
ssr์ ์ง์ํ์ง ์์ต๋๋ค.
HRM ๊ตฌ์ฑ ๋ฐฉ๋ฒ, API ์์ฑ์ด ์๋์ ์ผ๋ก ์ ์
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
@nihgwu ๋ผ์ฐํฐ๋ฅผ ์ถ์ถํ๋ ๋ชฉ์ ์ ๋ฌด์์ ๋๊น?