还在学 Redux?不妨提前学下它以后的替代品!——Zustand(zustand 就是 react 的 pinia)。

Zustand 是由 Jotai 和 React springs 的开发人员构建的快速且可扩展的状态管理解决方案, Zustand 以简单被大家所知, 它使用 hooks 来管理状态。

快速开始

安装依赖

npm install zustand # or yarn add zustand

通过 create 函数创建 store,回调可拿到 get set 就类似 Redux 的 getState 与 setState,可以获取 store 瞬时值与修改 store。返回一个 hook 可以在 React 组件中访问 store。

import { create } from 'zustand'const useStore = create(set => ({count: 1,inc: () => set(state => ({ count: state.count + 1 })),
}))function Controls() {const inc = useStore(state => state.inc)return <button onClick={inc}>one up</button>
}function Counter() {const count = useStore(state => state.count)return <h1>{count}</h1>
}

Zustand 和 Redux 一样,都是将状态保存在一个对象里,当然你可以创建多个 store 来分离状态,但他们在逻辑上是分开的。(与之相对的是 recoil / jotai 的原子化状态管理工具)

社区主流方案是 react-redux,其本质上基于 React 的 Context 特性实现,如果应用足够简单,实际上用 Context 手写一个简单的状态管理工具倒也并不难。不过,考虑到工具的完善性、项目的健壮性,通常采用较好的、成熟的社区方案。在移动端场景下,react-redux 略显臃肿,轻量级状态管理工具 zustand 倒是一个不错的替代方案。

Redux 替代品 Zustand相关推荐

  1. 生命的意義在你的内心

    不把生命的意義,寄託在外物之上 如今的人,太過於追求財物等外在事物,將自己人生的希望,生命的意義寄託在它們之上.當自己人生處於低谷的時候,要是沒有這些東西支撐自己,可能就沒有奮鬥下去的動力了. 王陽明 ...

  2. 一文带你全面体验八种状态管理库

    动手点关注 干货不迷路 写在前面 状态管理库伴随着数据驱动类框架诞生以来,一直都是个带争议的话题,社区里关于这个方向的讨论文章也是数不胜数,本文写作的目的并不是去详细解答每一款状态库的设计原理和最佳实 ...

  3. React (fetch redux初识 state action reducer getState dispatch .subscribe 取消监听 ActionTypes Action Crea)

    axios数据交互 安装axios cnpm i axios --save 2.发起http请求 this.axios.get('/api/menulist').then(res=>{conso ...

  4. operate函数_跟着 redux 学 compose组合函数

    ▲ 点击上方蓝字关注我 ▲ 把你的心 我的心串一串 串一株幸运草 串一个同心圆 文 / 景朝霞 来源公号 / 朝霞的光影笔记 ID / zhaoxiajingjing 目录0 / 热热身1 / red ...

  5. Redux 入门教程(三):React-Redux 的用法

    前两篇教程介绍了 Redux 的基本用法和异步操作,今天是最后一部分,介绍如何在 React 项目中使用 Redux. 为了方便使用,Redux 的作者封装了一个 React 专用的库 React-R ...

  6. Redux 入门教程(二):中间件与异步操作

    上一篇文章,我介绍了 Redux 的基本做法:用户发出 Action,Reducer 函数算出新的 State,View 重新渲染. 但是,一个关键问题没有解决:异步操作怎么办?Action 发出以后 ...

  7. Redux 入门教程(一):基本用法

    一年半前,我写了<React 入门实例教程>,介绍了 React 的基本用法. React 只是 DOM 的一个抽象层,并不是 Web 应用的完整解决方案.有两个方面,它没涉及. 代码结构 ...

  8. Koa2和Redux中间件源码研究

    一.Koa2中间件源码分析 在Koa2中,中间件被存放在一个数组中. 使用koa中,最常见的就是app.use(fn),use函数部分源码如下所示.首先中间件必须是个函数.若是generator函数, ...

  9. React+Redux+中间件

    MVVM是Model-View-ViewModel的缩写.mvvm是一种设计思想.Model 层代表数据模型,也可以在Model中定义数据修改和操作的业务逻辑:View 代表UI 组件,它负责将数据模 ...

最新文章

  1. Python-OpenCV 处理图像(四)(五):图像直方图和反向投影 图像中边界和轮廓检测
  2. char与varchar区别(MYISAM)
  3. 首页 系统相关 正文 小米手机远程和电脑互相连接及控制的方法
  4. 是谁扼杀了员工的敬业度?[转]
  5. 源代码src修改为本地图片_20 行 Python 代码批量抓取免费高清图片!
  6. tomcat 原理与使用资料
  7. 一、JAVA基础(数据类型、运算符、变量常量)
  8. eclipse maven 报错Could not get the value for parameter encoding for plugin execution default
  9. CATIA软件基础操作及知识工程
  10. 初中毕业学修车还是学计算机,儿子初中毕业了,成绩不好,想学门手艺谋生,去技校,还是去店里做学徒好?学修车吗?...
  11. 汇智聚力 平台闪耀 —— CDEC2022中国数字智能生态大会深圳举行
  12. VScode恢复删除的文件
  13. 三星s4流量显示无服务器,三星s4有什么隐藏功能
  14. The Sultan's Successors UVA - 167
  15. linux桌面 输入法 原理,安装ubuntu 7.10桌面版后无中文输入法的解决
  16. hdu1814 Peaceful Commission,2-sat
  17. MFC使用Windows API实现U盘插拔检测,获取U盘容量,U盘内容移动删除,开启和关闭U盘以及获取盘符
  18. 我迄今见过最完美的中文编程开发工具
  19. Windows Mobile开发资源介绍
  20. python图片换脸_用Python实现简单的‘换脸’

热门文章

  1. c语言程序设计实践万年历,c语言程序设计万年历-20210408030342.docx-原创力文档
  2. 2023年“科学探索奖”申报启动及指南
  3. w ndows10怎重装系统,笔记本重装系统教你笔记本怎么重装win10系统
  4. 微信小程序小技巧分享
  5. Zeal离线文档下载,以及报错解决方法
  6. Metasploit简单应用
  7. [异常退出,错误代码0xC0000005]:解决Windows应用程序崩溃的问题
  8. nz-zorro 主题切换 动态
  9. linux 命令行高亮显示
  10. 2023最新SSM计算机毕业设计选题大全(附源码+LW)之java智能物流管理系统k852w