【状态管理】zustand 中文文档,它来了!!!

限时加码!20+主流AI编程工具免费用 购周边加赠Coding Plan Lite,Claude Code、Cursor等即刻畅享,学习进阶更高效! 阅读详情

如果有兴趣了解更多用法及 api ,点击此处解锁中文文档

前言

是不是觉得 Redux 很难用?想用 Context 代替,但是你知道吗,Context 也有个很大的缺点:

  • context value发生变化时,所有用到这个context的组件都会被重新渲染,即使 component 需要的 state 可能根本沒有变动。基于 context 维护的模块越多,影响范围越大, 某些情况下会导致页面明显卡顿。
  • 另外,它依赖 Context Provider 包裹你的应用程序。

那么试试 zustand 吧,当然你可以选择 mobx,
zustand 与 mobx 最大的差别在于:

  • zustand 的状态更新遵循 react 思想,采用自然不可变更新, 而 mobx 类似 vue,基于数据劫持直接修改状态本身。
  • 体现在开发层面最直观的差异就是:
    • zustand 状态更新,新状态覆盖旧状态
    state = {a: 1}
    
    update(){
      stae = {a: 2} 
    }
    
    • mobx 状态更新,直接修改属性值
    state = {a: 1}
    
    update(){
      stae.a++
    }
    

React 三部曲

Step 1: 安装

npm install zustand # or yarn add zustand

Step 2: Store 初始化

创建的 store 是一个 hook,你可以放任何东西到里面:基础变量,对象、函数,状态必须不可改变地更新,set 函数合并状态以实现状态更新。

import { create } from 'zustand'

const useBearStore = create((set) => ({
  bears: 0,
  increasePopulation: () => set((state) => ({ bears: state.bears + 1 })),
  removeAllBears: () => set({ bears: 0 }),
}))

Step 3: Store 绑定组件,就完成了!

可以在任何地方使用钩子,不需要提供 provider
基于 selector 获取您的目标状态,组件将在状态更改时重新渲染。

选择目标状态:bears
function BearCounter() {
  const bears = useBearStore((state) => state.bears)
  return <h1>{bears} around here ...</h1>
}
更新目标状态:bears
function Controls() {
  const increasePopulation = useBearStore((state) => state.increasePopulation)
  return <button onClick={increasePopulation}>one up</button>
}

Vue 三部曲

什么,你还想试试在 Vue 中使用?那么 Step1 与 Step2 基本一致,不同的是 Step3 (Store 绑定组件):

Step 1: 安装

npm install zustand-vue # or yarn add zustand-vue

Step 2: Store 初始化

创建的 store 是一个 hook,你可以放任何东西到里面:基础变量,对象、函数,状态必须不可改变地更新,set 函数合并状态以实现状态更新。

import create from "zustand-vue";

const useBearStore = create((set) => ({
  bears: 0,
  increasePopulation: () => set((state) => ({ bears: state.bears + 1 })),
  removeAllBears: () => set({ bears: 0 }),
}))

export default useBearStore

Step 3: Store 绑定组件,就完成了!

基于 selector 获取您的目标状态,组件将在状态更改时重新渲染。

Store 绑定组件在 vue3vue2 中有所不同。

<template>
  <div>store.bears: {{ bears }}</div>
  <button @click="increasePopulation">increasePopulation</button>
  <button @click="removeAllBears">removeAllBears</button>
</template>

<script>
import useBearStore from "./store";

const increasePopulation = useBearStore((state) => state.increasePopulation);
const removeAllBears = useBearStore((state) => state.removeAllBears);

export default {
  data() {
    return {
      store: useBearStore(),
      bears: useBearStore((state) => state.bears),
    };
  },
  methods: {
    increasePopulation,
    removeAllBears,
  },
};
手把手带你掌握Zustand:轻量级React状态管理利器 Zustand 以其“极简却不失灵活”的特性,成为了许多开发者在 React 项目中管理状态的首选。它的用法和原理都相当直观,并且拥有良好的性能表现。对于想快速开发、并希望在未来随时可扩展的项目而言,Zustand 不失为一种优秀的选择。 阅读详情

相关推荐

react 之 zustand

zustand状态管理工具

Jasmin博客 2627

Zustand 完全指南:轻量高效的React状态管理方案

Zustand是一个轻量高效的React状态管理库,具有极简API、无Provider设计、精准订阅和优秀TypeScript支持等特点。它通过create函数创建状态容器,支持同步和异步操作,并能通过选择性订阅优化性能。Zustand还提供中间件扩展能力,适用于复杂场景如异步请求和多Store拆分,是Redux等传统方案的现代轻量替代品。

yao_gold的博客 887

React:状态管理zustand

React:状态管理 zustand

卡卡西:一个擅长拷贝的前端程序员 1711

Zustand极简的状态管理工具

Zustand极简的状态管理工具

小夏同学呀 1098

[React] Zustand状态管理

React之状态管理Zustand

959 8072

zustand 搞定 react 中复杂状态管理

Zustand 是一个轻量级的、无依赖的状态库,适用于 React 和函数式编程。它提供了一个简单、灵活的方式来管理应用程序的状态。本文就讲讲如何使用 zustand 搞定 react 中复杂状态管理,进而替代 redux

天问博客-专注于大前端技术 3126

React中使用Zustand用做状态管理

React中使用Zustand用做状态管理

white-hang的博客 1727

zustand最新的中文文档中文入门手册

一个小巧、快速且可扩展的精简状态管理解决方案,使用简化的 Flux 原则。它有一个基于 hooks 的简洁 API,不会产生样板代码或具有强烈的观点。不要因为它很可爱而忽视它。它具有相当强大的功能,花费了很多时间来处理常见陷阱,比如可怕的僵尸子组件问题、React 并发和混合渲染器之间的上下文丢失。它可能是 React 领域中唯一能解决所有这些问题的状态管理器。​

u012269430的博客 3341

React项目中使用zustand状态管理详细教程

zustand是一个用于状态管理的小巧而强大的库,它与React非常兼容。以下是使用zustand在Reactzustand首先,你需要安装zustand。你可以使用npm或yarn安装它:使用npm在你的React应用中,创建一个状态管理器,通常将其定义为一个自定义的Hook。状态管理器是用来存储和管理应用的状态数据的地方。在你的React组件中导入并使用useStore钩子来访问和修改状态。useStore钩子将会管理你的状态,而你可以在任何需要访问状态的组件中导入并使用它。

闪电⚡之王的博客简介 2555

React状态管理库 - zustand

zustand 是一个轻量级、快速且可扩展的 React 状态管理库,旨在提供一种简单直接的方式来管理应用状态,而无需其他解决方案通常伴随的繁琐代码。根据官方 Zustand 文档Zustand 是“一个使用简化 flux 原理的小型、快速且可扩展的精简状态管理解决方案”。它允许开发者创建包含状态和操作的 store,这些 store 可以通过 React hooks 进行访问和更新。

m0_68716504的博客 921

Zustand介绍(基于Hook的React状态管理库,简化全局和局部状态管理,替代Redux、MobX或Context API)zustand/middleware

TypeScript 支持。

Dontla的博客 1588

【高频考点精讲】前端状态管理方案对比:从ReduxZustand演进

🧑‍🏫:全栈老李📅:2025 年 6 月🧑‍💻:前端初学者、进阶开发者🚀:本文由全栈老李原创,转载请注明出处。最近在给团队做技术分享时,发现很多同学对状态管理的选择很纠结。今天全栈老李就来聊聊这个话题,从ReduxZustand的演进历程,帮你理清思路。

全栈老李的博客 737

documenso前端状态管理Zustand vs Redux实践

在现代前端应用开发中,状态管理是构建复杂交互系统的核心挑战。特别是对于documenso这类文档协作平台,需要处理文档编辑状态、用户权限控制、实时协作数据同步等多种复杂场景。本文将深入对比两种主流状态管理方案——ZustandRedux,结合documenso的技术栈特点(Remix框架、TypeScript),提供实战级选型指南与代码示例。 > **读完本文你将掌握**: > - 两种状态管...

gitblog_00323的博客 805

zustand 带着 zustand-vue / zustand-pub,它们来了!!!

为什么是 zustand / zustnad-vue / zustand-pub ? 前端状态管理框架对比。

Daivon_Up的博客 841

Next.js全局状态管理zustand。以及cookie和seesion的实用剖析。

但是当我想从cookie转回来时它变成了”%7B%22userId%22%3A%229%22%2C%22username%22%3A%2218285873023%22%2C%22password%22%3A%22123456%22%2C%22phone%22%3A%2218285873023%22%7D“这样的ASCII 字符,JSON.parse处理后是null。废话多了点,但也算是我的经验了吧,我的目的是记录一边后以后就不会再焦头烂额了。我比较喜欢边写代码,便给出注释,所以不懂的看注释,我就不再复述。

qq_64510339的博客 2894

Zustand浅学习

道阻且长,行而不辍,未来可期之前只是会使用zustand,也没仔细看过zustand文档,前段时间一个合约朋友问我前端的zustand怎么用,啊,这,是那个笑起来明媚的不像话的帅哥问我问题诶,那我得认真一下下,尽管已是前同事,还是希望他在异国他乡前程锦绣。哈哈哈,知识是用来共享的,也希望能帮到 路过的公主 or 王子。首先看一下Zustand 官方是如何王婆卖瓜的,啊,不,是如何精准的介绍自己的小型、快速且可扩展的 bearbones 状态管理解决方案。

weixin_44891495的博客 1203

Zustand vs Redux vs Context全面对比:3大理由告诉你React状态管理该选谁

React 状态管理选型是每个前端项目都绕不开的坑:Redux 样板代码多、Context 容易全量重渲染,而 Zustand 这个"小熊"常常因为名字可爱被低估。本文对 ZustandRedux、Context 这三大 React 状态管理方案做全面对比,用 3 大理由告诉你自己的项目到底该选谁。 [![Zustand React状态管理库官方小熊吉祥物形象](https://raw.git

gitblog_00895的博客 858

掌握React状态管理Redux Toolkit vs Zustand vs Context API

本文对比了三种主流React状态管理方案:Redux Toolkit适合大型企业应用,提供完善工具链但学习成本较高;Zustand以简洁API和出色TS支持见长,适合中小型项目;Context API是React内置方案,适合简单场景但需注意性能优化。三者各有侧重,选择应基于项目规模、团队经验等实际需求。

exlink2012的专栏 838

Clypra状态管理:React上下文和Zustand状态管理库的终极指南

Clypra作为一个现代化的视频编辑器,采用了一套精心设计的React上下文和Zustand状态管理架构。这个架构不仅确保了应用的响应性,还提供了卓越的开发体验。本文将深入探讨Clypra如何巧妙结合React上下文和Zustand状态管理库,为复杂的视频编辑应用构建可靠的状态管理系统。 ## 🎯 状态管理架构概述 Clypra的状态管理架构基于**领域驱动设计**原则,将不同功能模块的状态

gitblog_00725的博客 1100
上一篇: 【前端状态管理】React 状态管理工具如何选 context/redux/mobx/zustand/jotai/recoil/valtio
下一篇: zustand 带着 zustand-vue / zustand-pub,它们来了!!!
AwesomeDevin
博客等级 码龄10年 26粉丝 58原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值