zustand-state-tree: 一个基于 zustand 的状态管理库

同构自 pinia 语法,基于 zustand 开发的一套状态管理程序
更新于: 2023-11-29 11:11:28
项目主页: http://github.com/afeiship/zustand-state-tree

安装

# add zustand & immer middleware packages
yarn add zustand immer

# add zustand tree
yarn add @jswork/zustand-state-tree @jswork/scan-modules

types 文件

可以添加到 src/nx-env.d.ts

/// <reference types="@jswork/zustand-state-tree/global.d.ts" />

stores 目录

以下文件都是一些测试的 store 文件

.
├── fish.ts
├── layout.ts
├── nested-immer.ts
└── nested.ts

一个 store 的示例

export default nx.$defineStore({
  state() {
    return { collapsed: false };
  },
  getters: {
    width: (state) => (state.collapsed ? 80 : 200)
  },
  actions: {
    toggle: (state) => {
      state.collapsed = !state.collapsed;
    }
  },
  watch: {
    collapsed: (cur, old) => {
      console.log('cur collapsed:', cur, old);
    }
  },
  persist: {
    name: 'abc-test',
    partialize(state) {
      return {
        collapsed: state.collapsed
      };
    }
  }
});