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

项目集成zustand后,如何构建和使用,以及devtools函数。

1. import { devtools } from 'zustand/middleware'; 这个devTools的作用是?

提供的是 Redux DevTools 集成 中间件。把它包在 store 外面,就能在浏览器里用 Redux DevTools Extension 做以下事:

  1. 查看/回放每一次状态变更
    每条 setState 都会以 action 形式记录,可时间旅行调试。
  2. 查看当前状态快照
    DevTools 面板直接显示 store 的完整 JSON。
  3. 手动 dispatch action 修改状态
    在 DevTools 里输入 JSON 即可立即改变 store。
  4. 性能分析
    记录每次变更耗时,发现不必要的重渲染。
2. 怎么在zustand中使用devtools

在 Zustand 里启用 devtools 只需两步:

  1. 浏览器装好 Redux DevTools 扩展
  2. devtools 中间件包一下 create

注意:若想同时用 persist / immer 等其他中间件,把 devtools 包在最外层即可

举例

// store.ts
import { create } from 'zustand';
import { devtools } from 'zustand/middleware';interface State {count: number;inc: () => void;
}export const useStore = create<State>()(devtools((set) => ({count: 0,inc: () => set((state) => ({ count: state.count + 1 }), false, 'inc'),}),{ name: 'counter', // DevTools 面板中显示的名字enabled: process.env.NODE_ENV === 'development', // 只在开发环境启用}  )
);
3. enabled、name属性的作用是什么?

属性

类型

默认值

说明

name

string

在 Redux DevTools 面板里显示的 Store 名称,便于区分多个 Store。

enabled

boolean | () => boolean

true

是否真正启用 DevTools。设为 false 或在生产环境返回 false 时,中间件会直接透传,不产生任何调试开销。

4. 定义好store.ts后,我在我的组件中如何打印userInfo的username以及修改userName?
// 只取 username,避免整对象更新
const username = useUserStore((state) => state.userInfo.username);
console.log('当前用户名:', username);
const setUserName = useUserStore((state) => state.setUserName); // 假设你在 store 里暴露了 setUserName
<button onClick={() => setUserName('新名字')}>改名字</button>
5. const userInfo_Sample = useUserStore((state) => state.userInfo); 之前redux中的写法,这种写法还可以吗? 支持吗?

可以,支持。

http://www.lryc.cn/news/595642.html

相关文章:

  • 报错error:0308010C:digital envelope routines::unsupported解决方案
  • 网络原理 HTTP 和 HTTPS
  • 【3GPP】5G专用词汇1
  • 开源AI智能客服、AI智能名片与S2B2C商城小程序在客户复购与转介绍中的协同效应研究
  • 智联智造:国内新能源汽车品牌AGV小车无线控制系统创新实践
  • 《C++初阶之STL》【string类:详解 + 实现】
  • python办自动化--读取邮箱中特定的邮件,并下载特定的附件
  • 在Android开发中,如何获取到手机设备的PIN码?
  • 使用python中的pymysql库,并且转化为数组元组数据
  • 重构创作边界:川翔云电脑 - UE5云端超算引擎​
  • mysql_innodb_cluster_metadata源数据库
  • 7.22总结mstp,vrrp
  • 如何给手机充电才不伤电池?
  • Selenium+Java 自动化测试入门到实践:从环境搭建到元素操作
  • STM32 GPIO(通用输入输出)详解:从模式原理到实战应用
  • 如何把jar包打成docker镜像(SpringBoot项目打包成Docker )部署到Linux
  • 【电影剖析】千钧一发
  • 【openbmc6】entity-manager
  • ROS 与 Ubuntu 版本的对应关系
  • 如何使用电脑连接小米耳机(红米 redmi耳机)
  • 微信二维码扫描登录流程详解
  • redis 如何优雅地进行键设计?
  • Linux学习之Linux系统权限
  • 【论文阅读】Nonparametric clustering of RNA-sequencing data
  • Java IO 流详解:从基础到实战,彻底掌握输入输出编程
  • Linux C 多线程基本操作
  • 基于springboot+vue开发的图书馆座位预约系统【源码+sql+可运行】【50721
  • Djoser 详解
  • 奥比中光深度相机开发
  • Pytorch版本、安装和检验