跳至主要內容

zustand

chanchaw小于 1 分钟react

安装

yarn add zustand

案例

制作文件 src/store/index.ts,全部代码如下

import { create } from 'zustand'

/**
 * 1. create 后面通过泛型声明类型,是为了使用者可通过点调用属性、方法时有提示
 * 2. 后面的 set 方法体使用了立即执行函数返回一个对象,其中有属性也有函数
 * 3. 函数用来更新状态中的属性
 */
export const useMenuStore = create<{
  menuTree: MyType.MenuItem[] | null
  menuArr: MyType.MenuItem[] | null
  updateMenuTree: (menuTree: MyType.MenuItem[]) => void
  updateMenuArr: (menuArr: MyType.MenuItem[]) => void
}>(set => ({
  menuTree: null,
  menuArr: null,
  updateMenuTree: (menuTree: MyType.MenuItem[]) => set({ menuTree }),
  updateMenuArr: (menuArr: MyType.MenuItem[]) => set({ menuArr })
}))

调用者的使用方法

import { useMenuStore } from '@/store'
const menuStore = useMenuStore()
menuStore.updateMenuTree(menuItemList)

也可以明确只使用其中一个状态

import { useMenuStore } from '@/store'
const menuTree = useMenuStore(state => state.menuTree)
// 在 JSX 中使用 menuTree

该案例见 https://gitee.com/chanchaw/reat-manager/tree/mytools