zustand我想要获取状态时候,从数据库获取到bears的值然后set到状态,请问如何做呢?

针对zustand的使用,我知道可以按照如下的方式设置状态(bears: 0), 配置actions(例如: removeAllBears):
image.png

import {Window} from '../../interfaces/index'
const ipcRenderer = (window as unknown as Window).ipcRenderer

export const createBearSlice = (set:any, get:any) => ({

  // 1.状态
  bears: 0,

  // 2.操作状态的actions 
  removeAllBears: () => {

    // ipc通知:prisma操作数据库
    ipcRenderer.invoke('resetBears', 0).then((res) => {
      console.log(res)
    })
  
    // 设定状态
    set({ bears: 0 })
  }

})

1、但是我想要获取状态时候,从数据库获取到bears的值然后set到状态,请问如何做呢?
2、请问这里为何要使用createBearSlice作为名称呢?有什么含义?可以用bearSlice吗?

阅读 2.6k
2 个回答
export const createBearSlice = (set:any, get:any) => ({

  // 1.状态
  bears: 0,

  removeAllBears: () => {

    ipcRenderer.invoke('resetBears', 0).then((res) => {
      console.log(res)
    })
  
    // 设定状态
    set({ bears: 0 })
  },

  loadBearsFromDB: () => {
 
    ipcRenderer.invoke('getBears').then((res) => {
      set({ bears: res })
    })
  }

})

2.关于createBearSlice的命名,这只是一个命名约定,没有硬性规定。

1、那你就在数据库返回时去setzustand并不关心你的action是否异步,你在异步里去set(res)就行。
2、因为这是一个函数,或者说hook,通常hook都是use开头,但是这只是一个命名规范,所以你可以用任何名称,取名最好一眼就知道是什么,做什么的。用createuse开头那么使用的时候自然就知道这是个函数,不能直接用,需要createBearSlice()

ps:还是老问题,看文档,这些你在文档里都能找到

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题