Redux 替代品 Zustand

简介: Zustand 它使用 hooks 来管理状态

还在学 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 倒是一个不错的替代方案。


相关文章
|
XML Java 测试技术
通义灵码与githubcopilot的对比评测
本文评测了通义灵码,与github copilot在一些代码编写能力上面的能力比较。 虽然github copilot要强很多,但灵码目前的能力也不算很弱,并且在一些小类上会做的更好一些。 值得试试看,也是免费的
58679 10
下载python所有的包 国内地址
下载python所有的包 国内地址
|
传感器 Android开发 芯片
不写一行代码(三):实现安卓基于i2c bus的Slaver设备驱动
本文是系列文章的第三篇,展示了如何在Android系统中利用现有的i2c bus驱动,通过编写设备树节点和应用层的控制代码,实现对基于i2c bus的Slaver设备(如六轴陀螺仪模块QMI8658C)的控制,而无需编写设备驱动代码。
449 0
不写一行代码(三):实现安卓基于i2c bus的Slaver设备驱动
|
API Docker 容器
超实用工具分享!Gotenberg,让你的文档转换PDF无缝对接
超实用工具分享!Gotenberg,让你的文档转换PDF无缝对接
1049 4
|
数据采集 数据可视化 数据挖掘
‘kaggle视频游戏销售数据的可视化和分析‘项目实现
‘kaggle视频游戏销售数据的可视化和分析‘项目实现
|
机器学习/深度学习 算法 TensorFlow
【Keras+计算机视觉+Tensorflow】实现基于YOLO和Deep Sort的目标检测与跟踪实战(附源码和数据集)
【Keras+计算机视觉+Tensorflow】实现基于YOLO和Deep Sort的目标检测与跟踪实战(附源码和数据集)
455 2
|
机器学习/深度学习 人工智能 Kubernetes
人工智能AI库Spleeter免费人声和背景音乐分离实践(Python3.10)
在视频剪辑工作中,假设我们拿到了一段电影或者电视剧素材,如果直接在剪辑的视频中播放可能会遭遇版权问题,大部分情况需要分离其中的人声和背景音乐,随后替换背景音乐进行二次创作,人工智能AI库Spleeter可以帮我们完成大部分素材的人声和背景音乐的分离流程。 Spleeter的模型源来自最大的音乐网站Deezer,底层基于深度学习框架Tensorflow,它可以通过模型识别出素材中的背景音乐素材,从而判断出哪些是背景音乐,哪些是外部人声。
人工智能AI库Spleeter免费人声和背景音乐分离实践(Python3.10)
《QT从基础到进阶·九》菜单,菜单栏,工具栏创建
《QT从基础到进阶·九》菜单,菜单栏,工具栏创建
232 0
|
JSON 数据格式
VSCode使用技巧——Ctrl+鼠标滚轮键使字体进行缩放
VSCode使用技巧——Ctrl+鼠标滚轮键使字体进行缩放
1091 0

热门文章

最新文章