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

zustand状态管理工具(react)

分别创建文件continue.js、shoes.js

1、continue.js

import create from 'zustand'
import { persist } from 'zustand/middleware'export default create(persist((set) => ({counter: 12,incrementer: () => set((state) => ({ counter: state.counter + 1 })),decrementer: () => set((state) => ({ counter: state.counter - 1 }))}),{name: 'myStore' // 持久化状态的标识符,用于存储在 localStorage 或其他存储中})
)

2、shoes.js

import create from 'zustand'const useStore1 = create((set) => ({count: 12,increment: () => set((state) => ({ count: state.count + 1 })),decrement: () => set((state) => ({ count: state.count - 1 }))
}))export default useStore1

项目中使用

import React from 'react'
import useStore1 from '@/zustandStore/shoes.js'
import useStore2 from '@/zustandStore/continue.js'
import styles from './index.module.scss'export default function index() {const { count, increment, decrement } = useStore1()const { counter, incrementer, decrementer } = useStore2()return (<div className={styles.tableBox}><div>普通的值:{count}<button onClick={() => increment()}>新增</button></div><div>长保存的值(localStorage):{counter}<button onClick={() => incrementer()}>新增</button></div></div>)
}

相关文章:

  • python桶排序
  • 江山易改本性难移之ZYNQ SDK QSPI固化bug及其解决方法
  • C#灵活的任务调度组件FluentScheduler
  • 「Movie-web」一个非常简洁独特的电影网站开源项目
  • 【Flutter 开发实战】Dart 基础篇:最基本的语法内容
  • 华为路由器及交换机基础配置命令大全
  • element plus自定义组件表单校验
  • 视频做成二维码查看?多格式视频二维码生成器的使用方法
  • 轮询定时器 清除 + vue2.0
  • 剑指offer题解合集——Week3day7
  • LeetCode 83. 删除排序链表中的重复元素
  • [NAND Flash 6.4] NAND FLASH基本读操作及原理_NAND FLASH Read Operation源码实现
  • 【JAVA】在 Queue 中 poll()和 remove()有什么区别
  • 从零开始搭建一个个人博客并部署发布
  • 用通俗易懂的方式讲解:图解 Transformer 架构
  • 深入了解以太坊
  • 4个实用的微服务测试策略
  • C++类中的特殊成员函数
  • DOM的那些事
  • Linux CTF 逆向入门
  • mysql innodb 索引使用指南
  • 工作踩坑系列——https访问遇到“已阻止载入混合活动内容”
  • 后端_ThinkPHP5
  • 可能是历史上最全的CC0版权可以免费商用的图片网站
  • 前端js -- this指向总结。
  • 前端性能优化--懒加载和预加载
  • 网络应用优化——时延与带宽
  • 学习JavaScript数据结构与算法 — 树
  • 智能合约Solidity教程-事件和日志(一)
  • AI算硅基生命吗,为什么?
  • # 深度解析 Socket 与 WebSocket:原理、区别与应用
  • #我与Java虚拟机的故事#连载19:等我技术变强了,我会去看你的 ​
  • (1综述)从零开始的嵌入式图像图像处理(PI+QT+OpenCV)实战演练
  • (2.2w字)前端单元测试之Jest详解篇
  • (31)对象的克隆
  • (cljs/run-at (JSVM. :browser) 搭建刚好可用的开发环境!)
  • (react踩过的坑)antd 如何同时获取一个select 的value和 label值
  • (二)hibernate配置管理
  • (简单有案例)前端实现主题切换、动态换肤的两种简单方式
  • .NET 4.0网络开发入门之旅-- 我在“网” 中央(下)
  • .net core 6 集成 elasticsearch 并 使用分词器
  • .NET Core 将实体类转换为 SQL(ORM 映射)
  • .NET 事件模型教程(二)
  • .net6 webapi log4net完整配置使用流程
  • .Net各种迷惑命名解释
  • @AliasFor注解
  • @DateTimeFormat 和 @JsonFormat 注解详解
  • @javax.ws.rs Webservice注解
  • @NoArgsConstructor和@AllArgsConstructor,@Builder
  • [.net 面向对象程序设计进阶] (19) 异步(Asynchronous) 使用异步创建快速响应和可伸缩性的应用程序...
  • [2008][note]腔内级联拉曼发射的,二极管泵浦多频调Q laser——
  • [22]. 括号生成
  • [⑧ADRV902x]: Digital Pre-Distortion (DPD)学习笔记
  • [Android] Android ActivityManager
  • [CareerCup] 14.5 Object Reflection 对象反射