当前位置: 首页 > news >正文

公司注销网站备案公司网站怎么做分录

公司注销网站备案,公司网站怎么做分录,棋牌app开发多少钱,网站开发毕业设计参考文献前言:在react中,我们常用的状态管理工具就是redux,像他的官方提供的工具redux Toolkit 已经很简洁,好用了,除了这个之外的话,还有出现的Zustand也能简洁高效的管理我们的公共数据,相比较redux的…

前言:

        在react中,我们常用的状态管理工具就是redux,像他的官方提供的工具redux Toolkit 已经很简洁,好用了,除了这个之外的话,还有出现的Zustand也能简洁高效的管理我们的公共数据,相比较redux的官方工具更简洁,类似我们vue3出来的pinia的工具,定位是一样的,这里来说一说他。

Zustand 与 Redux(及 Redux Toolkit)对比

维度ZustandRedux
定位轻量级状态管理(单 store)企业级状态管理(支持复杂场景)
学习曲线极简 API,上手快概念较多(action/reducer/middleware)
不可变性默认可变(类似 Vuex)严格不可变(需返回新状态)
模板代码几乎为零Redux 较多,Redux Toolkit 减少
特性ZustandRedux
Store 数量多个独立 store单一 store,模块化通过 slices
更新机制直接调用 set 方法必须 dispatch(action)
性能优化自动选择组件所需状态需手动优化(如 shallowEqual)
中间件支持(如持久化、日志)生态强大(redux-thunk/saga 等)
DevTools需手动集成默认支持
TypeScript 支持极佳优秀(Redux Toolkit 更完善)

具体使用:

1、安装 
npm i zustand
2、简洁使用

store/index.js

import create from 'zustand';export const useCounterStore = create((set) => ({//定义变量count: 0,//定义方法,直接修改变量内容increment: () => set((state) => ({ count: state.count + 1 })), reset: () => set({ count: 0 }),}));

界面jsx中

import { useCounterStore } from '@/store'//定义好的变量和事件,直接就能取到
const { count, increment } = useCounterStore(); //用的时候,直接{}就能拿到,跟普通变量一样,事件也是直接就能调用
return <button onClick={increment}>{count}</button>;
3、项目正常使用,使用中级件

immer 和 persistZustand常用的中间件

immer 直接修改状态(类似 Vue 或 MobX 的写法),而 不需要手动返回新状态

(你的状态结构较复杂(如嵌套对象、数组)时,避免手写 ...spread 或 Object.assign

 persist持久化到本地存储,刷新后丢失

immer 的具体使用方法

可以看到,immer方法里面也可以直接写变量和事件,同步异步都一样

入参是set和get,set修改变量,get获取变量内容和调用其它定义的方法

mport { create } from 'zustand';
import { immer } from 'zustand/middleware/immer';// 使用 immer 中间件
const useTodoStore = create(immer((set) => ({ //set可以简写不要括号// 定义变量todos: [],// 定义方法addTodo: (text) =>set((state) => {state.todos.push({ text, done: false });}),}))
);
persist 的具体使用方法

1、persist有两个参数,第一个是回调函数,入参两个,set可以修改定义的变量,get可以获取调用当前定义好的变量与事件,第二个是缓存的配置

2、定义变量和方法直接在里面写就行了,不用initialState、reducers这种定义方法

3、异步方法和同步方法的区别直接是可以用async来定义异步,await来掉接口,同步就是方法里写逻辑,其它没区别

import { create } from 'zustand';
import { persist } from 'zustand/middleware';
import { loginApi } from '@/api/test'//封装的axios请求方法// 使用 persist 中间件
const useAuthStore = create(persist((set,get) => ({// 定义的变量user: null,token:'',// 定义的事件  login: (userData) => set({ user: userData }),//set方法直接修改变量内容,不用stategetToken: async () => {get().login() //可以通过这种方式,调用其它方法// 异步调用接口const res = await loginApi(form)set((state) => {state.token = res.tokenstate.user = res})},}),{name: 'auth-storage', // localStorage 的 keygetStorage: () => localStorage, // 默认是 localStorage// 可选:只持久化部分字段partialize: (state) => ({ user: state.user,token: state.token }),})
);
4、源码分享

当 immer和 persist 同时使用,immer放外面,persist放里面,参数还是 set和get

import { create } from 'zustand'
import { immer } from 'zustand/middleware/immer'
import { persist } from 'zustand/middleware'
import { useTabbarStore } from './tabbar'
import { useMenuStore } from './menu'
import { STORAGE_PREFIX, USER } from '@/config/cache'
import { loginApi, logoutApi } from '@/api/test'interface IState {token: stringuserInfo: any
}interface IActions {init: () => voidlogin: (form: any) => Promise<void>logout: () => Promise<void>
}export const useUserStore = create<IState & IActions>()(immer(persist((set, get) => ({token: '',userInfo: {},init: () => {useMenuStore.getState().init()useTabbarStore.getState().init()set((state) => {state.token = ''state.userInfo = {}})},login: async (form) => {get().init()const res = await loginApi(form)set((state) => {state.token = res.tokenstate.userInfo = res})},logout: async () => {await logoutApi().then(() => {get().init()})},}), {name: `${STORAGE_PREFIX}${USER}`,partialize: state => ({ token: state.token, userInfo: state.userInfo }),}),),
)

http://www.dtcms.com/a/459510.html

相关文章:

  • 自己的网站就可以做app常用seo站长工具
  • 龙华建网站多少钱dw网页制作教程ppt
  • 微信小程序与网站连接个人备案做电影网站
  • 网站用户体现好坏wordpress给文章添加子页面
  • 萍乡做网站的公司58找工作 招聘网最新招聘
  • 企业网站排名提升软件智能优化通城网站建设
  • 怎么可以做网站的网站网站正在升级建设中源码
  • 洛阳网站建设多少钱各大网站平台发布信息
  • 开网络网站建设公司的优势深色网站
  • 定制网站开发一般多少钱青岛市建设厅网站
  • 私人网站建设成本十大正规交易平台排名
  • word做网站框架资料共享的网站开发
  • 做app好还是响应式网站做网络推广教程
  • 优化设计官方网站word和the wordpress
  • 中文外贸网站建设青海省住房和城乡建设厅门户网站
  • 网站类型分析网站建设 小程序开发
  • 静态html网址网站导航源码go语言网站开发教程
  • 做彩票网站电话多少钱杭州微信小程序外包
  • 网站投注建设财经门户网站建设
  • 根据网站做软件深圳哪个区最好
  • 网站建设 顺德腾讯域名邮箱
  • 潍坊seo培训巩义网站推广优化
  • 建网站一定要备案吗推广是什么职业
  • 为网站开发网站红蓝色配色分析
  • 基于Python的高效数据可视化实战指南
  • 998元网站建设优化做网站三网多少钱
  • 建设银行网站修改手机号码网站建设功能选择表
  • 山西 网站建设ui设计公司排名
  • 东莞市营销网站建设万能视频下载工具
  • 代写企业软文湖南优化网站建设