4. usestore-ts

External Store๋ฅผ ์‚ฌ์šฉํ•จ์œผ๋กœ concurrent feature์—์„œ ๋ฐœ์ƒํ•˜๋Š” ํ‹ฐ์–ด๋ง ๋ฌธ์ œ๋ฅผ ๊ฒช์–ด๋ณด์งˆ ์•Š์•„ ๋ญ๊ฐ€๋ญ”์ง€.. ๋ฆฌ์•กํŠธ 18์— ์ถ”๊ฐ€๋œ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•ด๋ณด์งˆ ์•Š์•„์„œ ๊ทธ๋Ÿฐ๊ฐ€? ๋ Œ๋”๋ง๋œ ํ›„ ์œ ์ € ์ธํ„ฐ๋ ‰์…˜์ด ๋Šฆ๊ฒŒ ์ฒ˜๋ฆฌ๋˜๋Š” ๊ฒฝ์šฐ๋ฅผ ๊ฒช์–ด๋ณด์งˆ ์•Š์•„ ๊ทธ๋Ÿด์ˆ˜๋„ ์žˆ๊ฒ ๋‹ค.

Keyword

  • usestore-ts

  • useSyncExternalStore


1. usestore-ts

๋ฐ์ฝ”๋ ˆ์ดํ„ฐ๋ฅผ ์ด์šฉํ•ด Store, Action Store์˜ ๊ธฐ๋Šฅ์„ ๋ถ€์—ฌํ•˜๊ณ  ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ๋‚ด๋ถ€์ ์œผ๋กœ useSyncExternalStore hook์„ ์‚ฌ์šฉํ•จ.

ํ•˜๋‚˜์˜ ์Šคํ† ์–ด๊ฐ€ ๊ฐ€์ง€๋Š” ๊ฑฐ๋Œ€ํ•จ์„ ๋ถ„์‚ฐ์‹œํ‚ค๊ธฐ ์œ„ํ•ด ์—ฌ๋Ÿฌ๊ฐœ์˜ ์Šคํ† ์–ด๋ฅผ ๋“ฑ๋กํ•จ์œผ๋กœ์„œ ๊ด€์‹ฌ์‚ฌ์˜ ๋ถ„๋ฆฌ๊ฐ€ ๋ชฉ์ ์ธ ๊ฒƒ ๊ฐ™๋‹ค.


2. useSyncExternalStore

  • ์™ธ๋ถ€ ์Šคํ† ์–ด๋ฅผ ๊ตฌ๋…ํ•  ์ˆ˜ ์žˆ๋Š” React Hook

  • ์ปดํฌ๋„ŒํŠธ ์ตœ์ƒ์œ„ ๋ ˆ๋ฒจ์—์„œ useSyncExternalStore๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ์™ธ๋ถ€ ๋ฐ์ดํ„ฐ ์ €์žฅ์†Œ์—์„œ ๊ฐ’์„ ์ฝ๋Š”๋‹ค.

๊ธฐ์กด์—” UI๋ Œ๋”๋ง ์ž‘์—…์ค‘ ์ธํ„ฐ๋ ‰์…˜์ด ๋ฐœ์ƒํ•˜๋ฉด ๋ Œ๋”๋ง์ด ๋๋‚˜๊ธฐ ์ „๊นŒ์ง€ ์ธํ„ฐ๋ ‰์…˜ ์ฒ˜๋ฆฌ๊ฐ€ ์ง€์—ฐ๋๋‹ค. ๋ฆฌ์•กํŠธ 18๋ถ€ํ„ด concurrent feature๋ผ๋Š” ๊ธฐ๋Šฅ์ด ๋„์ž…๋๋Š”๋ฐ, ๋ Œ๋”๋ง ๋„์ค‘ ์œ ์ € ์ธํ„ฐ๋ ‰์…˜์ด ๋ฐœ์ƒํ•˜๋ฉด ๋ Œ๋”๋ง ์šฐ์„  ์ˆœ์œ„๋ฅผ ๋ฐ”๊ฟ” ์œ ์—ฐํ•˜๊ฒŒ UI๋ฅผ ๋ Œ๋”๋ง ๊ฐ€๋Šฅํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ๊ธฐ๋Šฅ์ด๋‹ค.

๋ฌธ์ œ๋Š” ์˜๋„์น˜ ์•Š๊ฒŒ ์ƒํƒœ ๋ถˆ์ผ์น˜๋กœ ์ธํ•œ ์„œ๋กœ ์ผ์น˜ํ•˜์ง€ ์•Š๋Š” ์‹œ์ ์˜ UI๊ฐ€ ๋ Œ๋”๋˜๋Š” ํ‹ฐ์–ด๋ง์ด ๋ฐœ์ƒํ•˜๊ธฐ ๋•Œ๋ฌธ์— React์˜ internal store๋Š” ์ด๋ฅผ ๋Œ€๋น„ํ•ด ๋‚ด๋ถ€ ๊นŠ์ˆ™ํ•œ ๊ณณ์— ์ƒํƒœ ์ฒ˜๋ฆฌ๋ฅผ ํ•  ์ˆ˜ ์žˆ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๊ตฌํ˜„ํ•ด ๋†“์•˜์ง€๋งŒ, external store๋ฅผ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ์ ์šฉ๋˜์ง€ ์•Š์•„ ํ‹ฐ์–ด๋ง์„ ํ•ด๊ฒฐํ•  ์ˆ˜ ์—†๋‹ค. useSyncExternalStore ํ›…์„ ์‚ฌ์šฉํ•ด ํ‹ฐ์–ด๋ง์ด ๋ฐœ์ƒํ•˜์ง€ ์•Š๋„๋ก ์™ธ๋ถ€ ์ €์žฅ์†Œ์˜ ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ์ง€์ผœ๋ณด๊ณ  ์žˆ๋‹ค๊ฐ€ ์™„๋ฃŒ๋˜๋ฉด ๋‹ค์‹œ ๋ Œ๋”๋ง์„ ์‹œ์ž‘ํ•œ๋‹ค.

Last updated