请问store.ts中,在初始化bears的时候,需要先fetchAPI得到数据赋予bears应该如何实现呢?

在使用zustand 开发时候,store.ts 定义状态如下:

import { create } from 'zustand'

const useBearStore = create((set) => ({
  bears: 0,
  increasePopulation: () => set((state) => ({ bears: state.bears + 1 })),
  removeAllBears: () => set({ bears: 0 }),
  updateBears: () => set(...)
}))

现在有一个需求就是:
1、在初始化bears的时候,需要先fetchAPI得到数据赋予bears
2、fetchAPI并且赋予bears值的时机是①在第一次使用bears状态时候,和②updateBears时候(比如修改数据库之后即时更新bears状态)
3、请问第2个问题是叫懒加载吗?

阅读 1.3k
1 个回答
zustand 中的 state 都需要触发 set 函数实现更新 ,它将与存储中的现有状态进行浅合并

bears初始值 要从fetchAPI异步获取,这样应该不行,要不然set没啥意义了;
或者你可以改造updateBearsremoveAllBearsincreasePopulation为异步函数,因为zustand并不关心set的过程是否是异步的,可以参考官方提供的以下示例:

const useFishStore = create((set) => ({
  fishies: {},
  fetch: async (pond) => {
    const response = await fetch(pond)
    set({ fishies: await response.json() })
  }
}))

至于2是不是叫懒加载,感觉两者没啥联系

推荐问题
logo
Microsoft
子站问答
访问
宣传栏