在React项目中使用zustand进行状态管理

一、安装依赖

npm install zustand --save

二、创建stores.ts 或 .js文件
 

// stores/dictStore.ts
import { create } from 'zustand';
import { DictType } from '@/types/projectInfoDetail';
import { nanoid } from 'nanoid';

interface DictState {
  // 产品类别列表
  productCategoryDict: DictType[];
  // 运输方式列表
  modeOfTransportDict: DictType[];
  // 支付方式字典
  paymentMethodDict: DictType[];
  // 支付类别字典
  paymentCategoryDict: DictType[];
  // 卖方抬头字典
  sellerTitleDict: DictType[];
  // 项目类别字典
  projectCategoryDict: DictType[];
  // 大洲字典
  continentDict: DictType[];
  // 客户等级字典
  customerLevelDict: DictType[];
  // 客户星级字典
  customerStartDict: DictType[];
  // 内外贸属性字典
  tradeAttributeDict: DictType[];
  // 贸易方式字典
  tradeModeDict: DictType[];
  // 贸易条款字典
  tradeTermsDict: DictType[];
  // 结算币种字典
  settlementCurrencyDict: DictType[];
  // 审批状态字典
  billStatusDict: DictType[];
  // 团队角色字典
  teamRoleDict: DictType[];
  // 客户类别字典
  customerCategoryDict: DictType[];
  // 产修类型字典
  productRepairTypeDict: DictType[];
  // 文件类别字典
  fileCategoryDict: DictType[];

  // 设置方法
  setProductCategoryList: (list: DictType[]) => void;
  setModeOfTransportList: (list: DictType[]) => void;
  setPaymentMethodDict: (list: DictType[]) => void;
  setPaymentCategoryDict: (list: DictType[]) => void;
  setSellerTitles: (titles: DictType[]) => void;
  setProjectCategoryDict: (dict: DictType[]) => void;
  setContinentDict: (dict: DictType[]) => void;
  setCustomerLevelDict: (dict: DictType[]) => void;
  setCustomerStartDict: (dict: DictType[]) => void;
  setTradeAttributeDict: (dict: DictType[]) => void;
  setTradeModeDict: (dict: DictType[]) => void;
  setTradeTermsDict: (dict: DictType[]) => void;
  setSettlementCurrencyDict: (dict: DictType[]) => void;
  setBillStatusDict: (dict: DictType[]) => void;
  setTeamRoleDict: (dict: DictType[]) => void;
  setCustomerCategoryDict: (dict: DictType[]) => void;
  setProductRepairTypeDict: (dict: DictType[]) => void;
  setFileCategoryDict: (dict: DictType[]) => void;
}

export const useDictStore = create<DictState>((set) => ({
  // 初始状态
  productCategoryDict: [],
  modeOfTransportDict: [],
  paymentMethodDict: [],
  paymentCategoryDict: [],
  sellerTitleDict: [],
  projectCategoryDict: [],
  continentDict: [],
  customerLevelDict: [],
  customerStartDict: [],
  tradeAttributeDict: [],
  tradeModeDict: [],
  tradeTermsDict: [],
  settlementCurrencyDict: [],
  billStatusDict: [],
  teamRoleDict: [],
  customerCategoryDict: [],
  productRepairTypeDict: [],
  fileCategoryDict: [],

  // 设置方法实现
  setProductCategoryList: (list) => set({
    productCategoryDict: list.map(item => ({ ...item, key: nanoid(34) }))
  }),
  setModeOfTransportList: (list) => set({
    modeOfTransportDict: list.map(item => ({ ...item, key: nanoid(34) }))
  }),
  setPaymentMethodDict: (list) => set({
    paymentMethodDict: list.map(item => ({ ...item, key: nanoid(34) }))
  }),
  setPaymentCategoryDict: (list) => set({
    paymentCategoryDict: list.map(item => ({ ...item, key: nanoid(34) }))
  }),
  setSellerTitles: (titles) => set({ sellerTitleDict: titles }),
  setProjectCategoryDict: (dict) => set({ projectCategoryDict: dict }),
  setContinentDict: (dict) => set({ continentDict: dict }),
  setCustomerLevelDict: (dict) => set({ customerLevelDict: dict }),
  setCustomerStartDict: (dict) => set({ customerStartDict: dict }),
  setTradeAttributeDict: (dict) => set({ tradeAttributeDict: dict }),
  setTradeModeDict: (dict) => set({ tradeModeDict: dict }),
  setTradeTermsDict: (dict) => set({ tradeTermsDict: dict }),
  setSettlementCurrencyDict: (dict) => set({ settlementCurrencyDict: dict }),
  setBillStatusDict: (dict) => set({ billStatusDict: dict }),
  setTeamRoleDict: (dict) => set({ teamRoleDict: dict }),
  setCustomerCategoryDict: (dict) => set({ customerCategoryDict: dict }),
  setProductRepairTypeDict: (dict) => set({ productRepairTypeDict: dict }),
  setFileCategoryDict: (dict) => set({ fileCategoryDict: dict })
}));

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CC_Waiting

我,大学未工作,感谢您的打赏

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值