3. useSyncExternalStore
useSyncExternalStore๋?
useSyncExternalStore๋ ์ธ๋ถ ์คํ ์ด๋ฅผ ๊ตฌ๋ ํ ์ ์๋ Reactํ ์ด๋ค.
์ ์ญ์ํ ๊ด๋ฆฌ๋ฅผ ํ ์ ์์ผ๋ฉฐ, ๊ฐ ๊ฐ๋ณ์ ์ธ ์ํ์ ๋ํ ์ ์ฅ, ์ ๋ฐ์ดํธ๊ฐ ๊ฐ๋ฅํ๋ค.
์ฌ์ฉํ๊ธฐ
/src/store/BaseStore.ts
export type Listener = () => void;
class BaseStore<Snapshot> {
protected listeners = new Set<Listener>();
snapshot = {} as Snapshot;
addListener(listener: Listener): void {
this.listeners.add(listener);
}
removeListener(listener: Listener): void {
this.listeners.delete(listener);
}
publish() {
this.listeners.forEach((listener) => listener());
}
getSnapshot() {
return this.snapshot;
}
getListener() {
return this.listeners;
}
}
export default BaseStore;
const snapshot = useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot?)/src/store/BaseStore.test.ts
/src/store/CartStore.ts
/src/hooks/useCartStore.ts
์ ํธ์ด์
๋ฆฌ์ํธ์์ ์ ๊ณตํ๋ ํ ์ ์ฌ์ฉํ๋ค.
๋ฆฌํด ํ์ ์ ๋ช ์์ ์ผ๋ก ์ง์ ํ ์ ์๋ค.
ํ ์คํธ์ฝ๋ ์์ฑ์ ์ฉ์ดํ๋ค.
Last updated