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