4.usestore-ts
usesotre-ts
React ์ํ ๊ด๋ฆฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
์ํ๋ฅผ ๊ด๋ฆฌํ๋ ์คํ ์ด ํด๋์ค์ ํ์๋ก ๊ฐ์ง๊ณ ์์ด์ผ ํ๋ ๋ด๋ถ ๋ฉ์๋๋ฅผ usestore-ts์ ์ด๋ ธํ ์ด์ ์ ํตํด์ ์์ฝ๊ฒ ์ฌ์ฉ์ด ๊ฐ๋ฅํ๋ค.
useSyncExternalStore์ธ๋ถ ์ ์ฅ์๋ฅผ ๊ตฌ๋
ํ ์ ์๋ React Hook์ด๋ค. useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot?)
์ ์ฅ์์ ์๋ ๋ฐ์ดํฐ์ ์ค๋ ์ท์ ๋ฐํํ๋ค. ๋ ํจ์๋ฅผ ์ธ์๋ก ์ ๋ฌํด์ผ ํ๋ค.
ํจ์ subscribe๋ ์คํ ์ด๋ฅผ ๊ตฌ๋ ํ๊ณ ๊ตฌ๋ ์ ์ทจ์ํ๋ ํจ์๋ฅผ ๋ฐํํด์ผ ํ๋ค.
ํจ์ getSnapshot๋ ์ ์ฅ์์์ ๋ฐ์ดํฐ์ ์ค๋ ์ท์ ์ฝ์ด์ผ ํ๋ค.
๋งค๊ฐ๋ณ์
subscribe: ๋จ์ผ ์ฝ๋ฐฑ ์ธ์๋ฅผ ๋ฐ์ ์คํ ์ด์ ๊ตฌ๋ ํ๋ ํจ์์ด๋ค. ์คํ ์ด๊ฐ ๋ณ๊ฒฝ๋๋ฉด ์ ๊ณต๋ ์ฝ๋ฐฑ์ ํธ์ถํด์ผ ํ๋ค. ๊ทธ๋ฌ๋ฉด ์ปดํฌ๋ํธ๊ฐ ๋ค์ ๋ ๋๋ง๋๋ค. ๊ตฌ๋ ํจ์๋ ๊ตฌ๋ ์ ์ ๋ฆฌํ๋ ํจ์๋ฅผ ๋ฐํํด์ผ ํ๋ค.
getSnapshot: ์ปดํฌ๋ํธ์ ํ์ํ ์คํ ์ด ๋ฐ์ดํฐ์ ์ค๋ ์ท์ ๋ฐํํ๋ ํจ์์ด๋ค. ์ ์ฅ์๊ฐ ๋ณ๊ฒฝ๋์ง ์์ ์ํ์์ getSnapshot์ ๋ฐ๋ณต์ ์ผ๋ก ํธ์ถํ๋ฉด ๋์ผํ ๊ฐ์ ๋ฐํํด์ผ ํ๋ค. ์ ์ฅ์๊ฐ ๋ณ๊ฒฝ๋๊ณ ๋ฐํ๋ ๊ฐ์ด ๋ค๋ฅธ ๊ฒฝ์ฐ(Object.is์ ์ํด ๋น๊ต๋จ), React๋ ์ปดํฌ๋ํธ๋ฅผ ๋ค์ ๋ ๋๋งํ๋ค.
getServerSnapshot(optional): ์คํ ์ด์ ์๋ ๋ฐ์ดํฐ์ ์ด๊ธฐ ์ค๋ ์ท์ ๋ฐํํ๋ ํจ์์ด๋ค. ์๋ฒ ๋ ๋๋ง ์ค๊ณผ ํด๋ผ์ด์ธํธ์์ ์๋ฒ ๋ ๋๋ง ์ฝํ ์ธ ์ ํ์ด๋๋ ์ด์ ์ค์๋ง ์ฌ์ฉ๋๋ค. ์๋ฒ ์ค๋ ์ท์ ํด๋ผ์ด์ธํธ์ ์๋ฒ ๊ฐ์ ๋์ผํด์ผ ํ๋ฉฐ, ์ผ๋ฐ์ ์ผ๋ก ์ง๋ ฌํ๋์ด ์๋ฒ์์ ํด๋ผ์ด์ธํธ๋ก ์ ๋ฌ๋๋ค. ์ด ์ธ์๋ฅผ ์๋ตํ๋ฉด ์๋ฒ์์ ์ปดํฌ๋ํธ๋ฅผ ๋ ๋๋งํ ๋ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ค.
Returns
๋ ๋๋ง ๋ก์ง์ ์ฌ์ฉํ ์ ์๋ ์คํ ์ด์ ํ์ฌ ์ค๋ ์ท์ด๋ค.
์ฃผ์ ์ฌํญ
getSnapshot์ด ๋ฐํํ๋ ์คํ ์ด ์ค๋ ์ท์ ๋ณ๊ฒฝ ๋ถ๊ฐ๋ฅํด์ผ ํ๋ค. ๊ธฐ๋ณธ ์คํ ์ด์ ๋ณ๊ฒฝ ๊ฐ๋ฅํ ๋ฐ์ดํฐ๊ฐ ์๋ ๊ฒฝ์ฐ ๋ฐ์ดํฐ๊ฐ ๋ณ๊ฒฝ๋ ๊ฒฝ์ฐ ๋ณ๊ฒฝ ๋ถ๊ฐ๋ฅํ ์ ์ค๋ ์ท์ ๋ฐํํ๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ์บ์๋ ๋ง์ง๋ง ์ค๋ ์ท์ ๋ฐํํ๋ค.
๋ค์ ๋ ๋๋งํ๋ ๋์ ๋ค๋ฅธ ๊ตฌ๋ ํจ์๊ฐ ์ ๋ฌ๋๋ฉด React๋ ์๋ก ์ ๋ฌ๋ ๊ตฌ๋ ํจ์๋ฅผ ์ฌ์ฉํ์ฌ ์คํ ์ด๋ฅผ ๋ค์ ๊ตฌ๋ ํ๋ค. ์ปดํฌ๋ํธ ์ธ๋ถ์์ ๊ตฌ๋ ์ ์ ์ธํ๋ฉด ์ด๋ฅผ ๋ฐฉ์งํ ์ ์๋ค.
Last updated