【发布时间】:2023-02-19 07:15:00
【问题描述】:
在 useEffect 函数中使用 Zustand 从 API 获取状态时,最佳做法是什么?现在我非常简单地使用它:
export interface ModeState{
modes: Mode[];
fetchModes: () => void;
}
export const useModeStore = create<ModeState>((set) => ({
modes: [],
fetchModes: async () => {
const modes: AcquisitionMode[] = await API.get(`/acquisition-modes`);
await set({ modes });
},
}));
在组件渲染函数中:
const modeStore = useModeStore()
const modes = modeStore.modes
useEffect(() => {
modeStore.fetchModes()
}, [])
然而,文档似乎暗示有多种方法可以编写它以在性能方面更有效,特别是如果我的商店变得越来越复杂,具有更多的值和获取功能。每次 API 调用创建一个商店是最佳做法吗?使用切片在每个组件中只获取您需要的商店部分?我应该在 useEffect 中以不同的方式使用商店吗?我在网上找不到关于如何使用 useEffect 商店的明确示例。 subscribe 文档似乎不适用于您使用商店通过异步函数获取值的用例。
【问题讨论】:
-
我个人会使用
react-query来获取数据,然后在需要时将结果设置为客户端状态。
标签: reactjs typescript react-hooks zustand