스토어에서 속성 또는 액션을 사용할 때 셀렉터 함수를 사용하는 것이 좋습니다.
const bears = useBearStore((state) => state.bears);
하지만 반복적으로 셀렉터 함수를 사용하는 것이 불편할 수 있습니다.
이런 경우 셀렉터 함수를 자동 생성하도록 설정할 수 있습니다.
셀렉터 함수를 생성하는 createSelectors 함수를 작성합니다.
const createSelectors = (_store) => {
let store = _store;
store.use = {};
for (let k of Object.keys(store.getState()) {
store.use[k] = () => store((state) => state[k]);
}
return store;
}
다음과 같이 스토어가 작성된 경우
import { create } from 'zustand';
const useBearStoreBase = create((set) => ({
bears: 0,
increase: (by) => set((state) => ({ bears: state.bears + by })),
increment: () => set((state) => ({ bears: state.bears + 1 })),
}));
스토어를 셀렉터 자동 생성 함수에 전달하여 실행합니다.
export const useBearStore = createSelectors(useBearStoreBase);