3. useSyncExternalStore
useSyncExternalStore란?
사용하기
/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