2. Tsyringe
TypeScript์ฉ DI ๋๊ตฌ(IoC Container)
Tsyringe๋ฅผ ์ด์ฉํด store๋ฅผ ๋ง๋ค์ด prop drilling์ ๋ง์๋ณด์
DI
์์กด์ฑ์ ์ธ๋ถ(IoC container)์์ ๊ฒฐ์ ํด์ฃผ๋ ๊ฒ
ํด๋์ค์ ๋ํ ์์กด์ฑ์ ์ธํฐํ์ด์คํ
์ธ์คํด์ค๋ฅผ ์ธ๋ถ์์ ์์ฑํ์ฌ ์ฃผ์ ํด์ฃผ๋ ๊ฒ
์ฌ๋ฌ ํด๋์ค ๊ฐ์ ์์กด๊ด๊ณ๊ฐ ์์ผ๋ฉด ํ ํด๋์ค๊ฐ ๋ฐ๋ ๋ ๋ค๋ฅธ ํด๋์ค๊ฐ ์ํฅ์ ๋ฐ๊ฒ ๋จ
ํด๋์ค๊ฐ์ ๊ฒฐํฉ๋๊ฐ ์ฝํด์ ธ ํ ํด๋์ค๊ฐ ๋ณ๊ฒฝ๋ ๋ ๋ค๋ฅธ ํด๋์ค๊ฐ ๋ณ๊ฒฝ๋ ํ์์ฑ์ด ๋ฎ์์ง
reflect-metadata
๋ฐ์ฝ๋ ์ดํฐ(@)๋ฅผ ์ด์ฉํด ํจ์์ ๋ํ ์ ๋ณด(๋ฉํ๋ฐ์ดํฐ)๋ฅผ ์ถ๊ฐํ ์ ์์
์ฌ๋ฌ๊ฐ์ง ๋ฉ์๋์ ๋ฐ์ฝ๋ ์ดํฐ๋ฅผ ์ถ๊ฐํด ๋ฉํ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐํ ์ ์์
์ฑ๊ธํค ํจํด
์ธ์คํด์ค๊ฐ ์ค์ง ํ๋๋ง ์์ฑ๋์ด์ผ ํ๋ ์ผ์ด์ค์ ์ฌ์ฉํ๋ ํจํด
์ฌ๋ฌ ์ค๋ ๋์์ ๋์์ ์ ๊ทผํด๋ ๋ฌธ์ ๊ฐ ์๋๋ก ๋์์ฑ์ ๊ณ ๋ คํด์ผํจ
@singleton ๋ฐ์ฝ๋ ์ดํฐ๋ฅผ ํตํด ํ์ ์คํฌ๋ฆฝํธ์์ ์ฌ์ฉ ๊ฐ๋ฅ
์ค์ต ๋ด์ฉ ์ ๋ฆฌ
์นด์ดํฐ ๊ฐ์ ๋ณด์ฌ์ฃผ๋
<Counter/>
์ปดํฌ๋ํธ์นด์ดํฐ ๊ฐ์ ์ฆ๊ฐํ๊ฑฐ๋ ๊ฐ์์ํฌ ์ ์๋ ๋ฒํผ์ ๊ฐ์ง๋
<CounterController/>
์ปดํฌ๋ํธ๋ ์ปดํฌ๋ํธ๋
useCounterStore
ํ ์ ์ด์ฉํด์ store์ ์๋ count๊ฐ์ ์ ๊ทผํ ์ ์์store๋
CounterStore
์ฑ๊ธํค ํด๋์ค๋ฅผ tsyringe ์ปจํ ์ด๋์ ์ ์ฅํด์ ์ฌ์ฉ(์ด๋์๋ ์ง ํ๋์ CountStore ์ธ์คํด์ค๋ฅผ ์ฌ์ฉํ ์ ์๋๋ก tsyringe๊ฐ ์์์ ์ฒ๋ฆฌํด์ค)CounterStore
ํด๋์ค๊ฐ ๋ฆฌ์ค๋ ์ ์forceUpdate
๋ฅผ ๋ฑ๋กํด๋๊ณ count๊ฐ์ด ๋ณ๊ฒฝ๋ ๋๋ง๋ค publish๋ก ๋ฆฌ์ค๋๋ฅผ ํธ์ถํด์ฃผ๋ฉด ์ํ ๋ณ๊ฒฝ์ ๋ฆฌ๋ ๋๋ง ํ ์ ์์
Last updated