Zustand 可以做什么? CounterComponent.tsx├── stores/│ └── useCounterStore.ts└── index.tsx// store.tsimport create from 'zustand 使用对象更新状态import create from 'zustand';// 定义状态类型interface BearState { bears: number; increasePopulation import create from 'zustand';// 用户基本信息存储interface UserBasicInfo { name: string; age: number; npm install immerimport create from 'zustand';import produce from 'immer';interface NestedState {
zustand 是一个非常时髦的状态管理库,也是 2021 年 Star 增长最快的 React 状态管理库。它的理念非常函数式,API 设计的很优雅,值得学习。 概述 首先介绍 zustand 的使用方法。 精读 其实大部分使用特性都在利用 React 语法,所以可以说 50% 的特性属于 React 通用特性,只是写在了 zustand 文档里,看上去像是 zustand 的特性,所以这个库真的挺会借力的 对 zustand 来说,便是定义在 vanilla.ts 文件的 createStore 了。 总结 zustand 是一个实现精巧的 React 数据流管理工具,自身框架无关的分层合理,中间件实现巧妙,值得学习。
Zustand是什么 Zustand 是一个为 React 应用程序设计的开源状态管理库,它旨在提供一种简单、轻量级且易于使用的方式来管理应用程序的状态。 中间件支持 Zustand 支持大量的中间件,如 Immer、Redux 中间件等,这使得开发者可以根据需要轻松地扩展 Zustand 的功能。 如何使用Zustand 1. 安装 Zustand 首先,你需要安装 Zustand 库。 可以通过 npm 或 yarn 来安装: npm install zustand # 或者 yarn add zustand 2. 总结 以上就是zustand的全部用法了。已经简单阐述了一下为什么要选zustand而不是继续用redux。
因此,不同的前端生态诞生了不同的解决方案:Vue生态:Vuex→PiniaReact生态:Redux、MobX、Zustand、Recoil等本文主要对比Pinia、Redux、Zustand三者,覆盖主流 Zustand极简灵活,非常适合快速开发和中小型项目。 Zustand:使用订阅机制,只会触发实际使用该状态的组件更新,性能出色。可以说:Pinia与Zustand性能更自然(依赖追踪/订阅更新)。Redux性能也不错,但开发者需要多关注优化手段。 Zustand:极简、灵活,特别适合中小型React项目或快速MVP。如果你觉得Redux太重,Zustand会是更轻量的替代。六、选型建议如果你在Vue生态:优先选择Pinia。 如果你在React生态:大型、多人协作项目→ReduxToolkit中小型、快速迭代项目→Zustand如果你追求学习成本最低:Pinia(Vue)或Zustand(React)。
图片使用了最新技术栈React18、React-Router v6、react-vant、Zustand4开发构建项目。 图片图片技术栈开发工具:Vscode框架技术:react18+react-dom+vite4.xUI组件库:react-vant (有赞react移动端UI库)状态管理:zustand^4.3.9路由管理 element: <Register /> }]const Router = () => useRoutes(routerConfig)export default RouterReact18 hooks状态管理Zustand4Zustand 图片/** * Zustand状态管理,配合persist本地持久化存储*/import { create } from 'zustand'import { persist, createJSONStorage } from 'zustand/middleware'export const authStore = create( persist( (set, get) => ({
Zustand 介绍 特点 1. 安装 npm install zustand 2. import {create} from 'zustand' const useBearStore = create((set) =>({ // 初始化数据状态 count: 同步修改 import { create } from 'zustand' import { Button } from 'antd' import '. 异步修改 import { create } from 'zustand' import { Button } from 'antd' import '. 绑定store 到组件 function Zustand() { const { fetchChannel, channelsList } = useStore() return
什么是Zustand? 近年来,React社区涌现出了许多新的状态管理库,比如Jotai、Recoil,还有本文的主角——Zustand。 Zustand凭借其简洁的API、低学习曲线和对TypeScript的无缝支持,成为了众多选项中的热门之选。 但是,你可能还不太熟悉Zustand。 在React项目中使用Zustand Zustand的设计理念是让状态管理变得简单而高效,这不仅体现在其轻量级的体积上,更体现在其易用性上。 接下来,我们将通过一个简单的计数器示例以及如何在状态中存储数组,来展示如何在React项目中使用Zustand。 1. 安装Zustand 首先,你需要在项目中安装Zustand。 可以通过npm或yarn来进行安装: npm install zustand 或者 yarn add zustand 2.
用 zustand 是这样写: import { create } from 'zustand' const useStore = create((set) => ({ aaa: 0, bbb 这个叫做 selector: 状态变了之后,zustand 会对比 selector 出的状态的新旧值,变了才会触发组件重新渲染。 此外,异步逻辑,比如请求服务端接口来拿到数据,这种也是一个放在全局 store,一个单独放在原子状态里: 在 zustand 里是这样: import { create } from 'zustand' 那 zustand 支持的中间件机制在 jotai 里怎么实现呢? zustand 支持通过中间件来修改 get、set 函数: 比如在 set 的时候打印日志。 试一下: import { create } from 'zustand' import { persist } from 'zustand/middleware' const useStore =
项目中,从详情页返回列表页后,Zustand 状态被重置,控制台无报错。 Zustand 持久化插件的 “隐形操作”:zustand/middleware/persist 可能因存储 key 或序列化逻辑,导致路由切换时状态被清空。 zustand';import { persist } from 'zustand/middleware/persist';export const useDeviceStore = create( 四、釜底抽薪:定制化状态持久化逻辑结合 Cursor 提示,我推测:Vite 开发环境下,模块热更新导致 Zustand 持久化存储 “混乱”—— 路由跳转时,Vite 刷新模块,Zustand 误把 修改 store/device.ts:tsimport { create } from 'zustand';import { persist } from 'zustand/middleware/persist
【GitHub日报】2022-10-09 zustand、neovim、webtorrent、express 等 4 款 App 今日上新 zustand[1] Bear necessities for state management in React 最新发布版本:[pmndrs/zustand] Release v4.1.2 - v4.1.2 更新内容: v4.1.2[2] • Repository 引用链接 [1] zustand: https://github.com/pmndrs/zustand [2] v4.1.2: https://github.com/pmndrs/zustand/releases /tag/v4.1.2 [3] pmndrs/zustand: https://github.com/pmndrs/zustand [4] v4.1.2: https://github.com/pmndrs /zustand/tree/v4.1.2 [5] 509175c: https://github.com/pmndrs/zustand/commit/509175c0b83f3615f1c2b94979fd06aec6c3e8e9
Redux曾经是React生态的"国王",但最近的技术社区里,你会频繁看到这样的声音: "我们用Zustand替代了Redux,删除了好几百行代码" "Redux就像企业级的仪式感,而Zustand让我专注于真正的产品逻辑 从2-3周 → 2-3天 包体积(min+gzip) 从~12kb → ~2kb 第二部分:Zustand的极简哲学 什么是Zustand? 同样的计数器,Zustand怎么做 import { create } from'zustand'; // 就这么简单 const useCounterStore = create((set) => 为什么Zustand能这样简洁? 终极建议 团队规模 推荐 理由 1-3人 Zustand 无需重量级工具 4-20人 Zustand 开发效率优先 20-100人 Zustand + 团队约定 自律的架构 100+人 Redux Toolkit
第三个真相:Zustand正在悄悄赢 如果你承认确实需要共享状态,那么下一个问题是:用什么库? Zustand - 赢家。 Zustand ✅ - 开箱即用,自动订阅你访问的属性。 Q: Zustand能替代Redux吗? 对于共享状态的需求,是的。但Zustand是"随意型"的,这对小团队很好,对大团队可能造成代码风格混乱。所以选择时要考虑团队规模。 分阶段迁移: 新功能不用Redux,改用TanStack Query + Zustand 现有功能逐个抽离:远程数据部分→TanStack Query,URL参数→nuqs,其余部分→Zustand 最后
使用最新前端技术react+arco.design+zustand+bizcharts+axios纯手撸后台管理系统。 图片图片技术栈编辑器:vscode框架技术:react18+vite4+react-router+zustand+axios组件库:arco-design (字节前端react组件库)路由管理:react-router-dom ^6.16.0状态管理:zustand^4.4.1模拟数据:mockjs^1.1.0模拟请求:axios^1.5.1图表库:bizcharts^4.1.22编辑器组件:@wangeditor/editor-for-react 新react状态管理react-admin使用 了新一代react状态管理插件zustand。 图片/** * react18状态管理库Zustand4,中间件persist本地持久化存储*/import { create } from 'zustand'import { persist, createJSONStorage
使用技术 编程工具:vscode 框架技术:electron27+vite^4.4.5+react18+zustand+react-router UI组件库:arco-design (字节react轻量级 UI组件库) 样式处理:sass^1.69.5 图表组件:bizcharts^4.1.23 MD编辑器组件:@uiw/react-md-editor 本地存储管理:zustand^4.4.4 打包管理: small" icon={<Icon name="ve-icon-lang" />} /> </Dropdown> ) } 搭配zustand /** * react状态管理库Zustand4,中间件persist本地持久化存储 */ import { create } from 'zustand' import { persist, createJSONStorage } from 'zustand/middleware' import { generate, getRgbStr } from '@arco-design/color' export const appStore
Zustand vs Redux zustand 和 redux 是非常像的,都基于不可变状态模型,都基于单向数据流。 和 zustand 不同的是,他是一个组件级别的状态管理库。和 zustand 相同的是同样都基于不可变状态模型。 Zustand vs Jotai Zustand 和 Jotai 之间有两个主要不同: Zustand 是单一 store,Jotai 由原子 atom 组合而成; Zustand 的 store 存储在 Valtio vs Zustand zustand 基于不可变状态模型,valtio 基于可变状态模型。 和 zustand 不同的是,他是一个组件级别的状态管理库。和 zustand 相同的是同样都基于不可变状态模型。
图片使用了react18+react-router+zustand+arco design+react-dialog等技术开发构建项目。 () => useRoutes(routerConfig)export default Router图片react18 状态管理库zustandreact18-webchat项目使用了新状态管理插件zustand zustand一款轻量级的支持react18 hooks语法的状态管理,类似vue3 pinia状态管理工具。 // NPMnpm install zustand// Yarnyarn add zustand图片/** * react18状态管理库Zustand*/import { create } from ' zustand'import { persist, createJSONStorage } from 'zustand/middleware'export const authStore = create
Bridge 将被 JSI 取代 渲染系统 Fabric 将取代当前的 UI Manager Turbo Modules CodeGen 创建一个类似 Zustand 的状态管理库(视频)[14] Daishi Zustand 是 2021 年 Star 增长最快的 React 状态管理库,有着优雅的 API 设计和函数式理念,而且大部分特性都属于 React 的通用特性,源码实现很精妙,看起来很爽。 Zustand 源码解读[15] 新一代 JS 日期/时间 API Temporal 教程[16] 从 Java 抄来的 Date 缺点太多了:不支持开发人员通过 API 来切换时区信息、解析器行为不可靠 https://medium.com/coox-tech/deep-dive-into-react-natives-new-architecture-fb67ae615ccd [14] 创建一个类似 Zustand 的状态管理库(视频): https://egghead.io/courses/create-a-zustand-like-module-state-library-bf55241e [15] Zustand
我们选了 Zustand: import create from'zustand' const useStore = create((set) => ({ // 用户信息 user: null, setUser const user = useStore(state => state.user) const addToCart = useStore(state => state.addToCart) 为什么选 Zustand Redux 代码:从 6000+ 行削减到 400 行(只有购物车状态用 Zustand) 新功能开发速度:提升 40% Bug 数量:下降 60% 页面加载速度:快了 30% 新人上手时间:从一周缩短到两天 → 用 Context + useState,或者 Zustand 4. 这是来自服务器的数据,而且会变化? → 用 React Query 只有 当这些都不适合,你才需要考虑 Redux。
使用状态管理库处理复杂状态当应用规模扩大,状态逻辑复杂时,可使用 Redux、Zustand 等库。 // Zustand 示例(轻量级状态管理)import { create } from 'zustand';const useStore = create((set) => ({ cart: [],
最直观的证据来自数据: 状态管理工具使用率变化 Zustand: 2023年 8% → 2026年 35% Redux: 2023年 60% → 2026年 38% 为什么大家开始逃离 Redux 而 Zustand 呢? Zustand 更新流程: User Action ↓ 调用 state 更新函数 ↓ Component 重新渲染 只需两步。 更扎心的是性能数据: 指标 Zustand Redux 状态更新延迟 35ms 65ms 内存开销 5% 15% 首屏加载时间 +200ms +400ms 有个团队从 Redux 迁移到 Zustand Zustand 和 Jotai:状态管理的极简主义 // Zustand import { create } from'zustand' const useStore = create((set) = → 迁移到 Zustand,用 React Query 管理服务端数据 [ ] 还在用微前端但只有 3-5 个应用?