11. vue pinia 和react redux、jotai对比

news2025/6/7 10:39:48

对比 Vue 的 Pinia,和 React 的 Redux、Jotai,分中英文简要介绍、特性、底层原理、使用场景。

  1. 简单介绍

1.1 Pinia(Vue)
• 英文:Pinia is the official state management library for Vue 3, designed to be simpler and more modular than Vuex.
• 中文:Pinia 是 Vue 3 官方推荐的状态管理库,比 Vuex 更简洁和模块化。

1.2 Redux(React)
• 英文:Redux is a predictable state container for JavaScript apps, widely used in React for managing complex state.
• 中文:Redux 是一个可预测的状态容器,广泛用于 React 中管理复杂状态。

1.3 Jotai(React)
• 英文:Jotai is a primitive and flexible state management library for React, based on atomic state concepts.
• 中文:Jotai 是一个基于原子状态概念的极简灵活状态管理库,专为 React 设计。

  1. 特性对比

2.1 Pinia
• 模块化设计,支持多个 store,状态、getter、action 分明。
• 直接使用响应式 API,语法简洁。
• 支持热重载、Devtools 集成好。
• 类型友好,支持 TypeScript。
• 状态集中管理,方便组件共享。

2.2 Redux
• 中央化状态管理,所有状态集中存储。
• 依赖 action 和 reducer 来修改状态,模式较为严格。
• 有丰富的中间件(middleware)支持异步操作。
• 社区成熟,生态丰富,适合大型复杂项目。
• 需要较多样板代码(boilerplate),学习曲线较陡。

2.3 Jotai
• 极简设计,每个状态是独立的“atom”。
• 免去 reducer、action,直接通过 Hook 操作状态。
• 支持派生状态(类似 computed)和异步状态。
• 细粒度状态更新,性能优异。
• 轻量且灵活,适合中小型项目或追求简洁的场景。

  1. 底层原理简述

3.1 Pinia
• 基于 Vue 3 的响应式系统(Proxy + reactive)。
• Store 中的 state、getter、action 都是响应式对象或函数。
• 利用 Vue 的响应式追踪实现组件自动更新。

3.2 Redux
• 使用单一不可变状态树(single immutable state tree)。
• 通过纯函数 reducer 计算新状态,保证状态不可变。
• 触发 dispatch(action) 更新状态,触发订阅者重新渲染。
• 使用中间件实现异步处理(如 redux-thunk、redux-saga)。

3.3 Jotai
• 状态被封装成独立的 atom,彼此解耦。
• 利用 React 的 Hooks 和 Context 实现状态共享。
• 支持同步和异步 atom,支持状态派生。
• 组件只订阅使用的 atom,减少不必要渲染。

  1. 使用方式简述

4.1 Pinia

import { defineStore } from ‘pinia’

export const useCounterStore = defineStore(‘counter’, {
state: () => ({ count: 0 }),
actions: {
increment() { this.count++ }
}
})

组件中调用:

const counter = useCounterStore()
counter.increment()

4.2 Redux

// 定义 reducer
const counterReducer = (state = { count: 0 }, action) => {
switch(action.type) {
case ‘INCREMENT’: return { count: state.count + 1 }
default: return state
}
}

// 创建 store
const store = createStore(counterReducer)

// 组件中使用
store.dispatch({ type: ‘INCREMENT’ })

通常结合 React-Redux 的 useSelector 和 useDispatch。

4.3 Jotai

import { atom, useAtom } from ‘jotai’

const countAtom = atom(0)

function Counter() {
const [count, setCount] = useAtom(countAtom)
return <button onClick={() => setCount(count + 1)}>{count}
}

  1. 适用场景

5.1 Pinia
• Vue 3 项目,尤其需要模块化和灵活状态管理。
• 中小型到大型项目均适用。
• 需要集成 Devtools,响应式状态管理。

5.2 Redux
• React 大型复杂项目,状态非常集中和共享的应用。
• 需要严格状态管理流程和中间件支持异步任务。
• 需要社区生态丰富的解决方案。

5.3 Jotai
• React 项目,追求极简且灵活的状态管理。
• 组件状态细粒度更新,避免复杂样板代码。
• 中小型项目,或需要原子状态管理的场景。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2402791.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

手机如何防止ip关联?3种低成本方案

在当今数字化时代&#xff0c;手机已成为人们日常生活中不可或缺的工具&#xff0c;无论是社交、购物、支付还是工作&#xff0c;都离不开手机。然而&#xff0c;随着网络技术的不断发展&#xff0c;网络安全问题也日益突出&#xff0c;其中IP关联问题尤为常见。那么&#xff0…

Pandas和Django的示例Demo

以下是一个结合Pandas和Django的示例Demo&#xff0c;展示如何在Django项目中读取、处理和展示Pandas数据。 Pandas和Django的示例Demo 前置条件&#xff1a; 安装python 基础设置 确保已安装Django和Pandas&#xff1a; pip install django pandasInstalling collected p…

【p2p、分布式,区块链笔记 MESH】Bluetooth蓝牙通信拓扑与操作 BR/EDR(经典蓝牙)和 BLE

目录 1. BR/EDR&#xff08;经典蓝牙&#xff09;网络结构微微网&#xff08;Piconet&#xff09;散射网&#xff08;Scatternet&#xff09;蓝牙 BR/EDR 拓扑结构示意图 2. BLE&#xff08;低功耗蓝牙&#xff09;网络结构广播器与观察者&#xff08;Broadcaster and Observer…

航道无人机巡检系统

随着长江干线、京杭运河等航道智慧化升级提速&#xff0c;传统人工巡检模式已难以满足高频次、大范围、高精度的航道管理需求。无人机凭借其灵活机动、多源感知、高效覆盖等优势&#xff0c;正成为航道巡检的“空中卫士”。本文将结合多地成功案例&#xff0c;从选型标准、技术…

【JVM】Java虚拟机(一)——内存结构

目录 一、简介 二、程序计数器 三、虚拟机栈 栈帧结构&#xff1a; 特点&#xff1a; 四、本地方法栈 特点&#xff1a; 五、堆 堆结构&#xff1a; 特点&#xff1a; 对象分配过程&#xff1a; 六、方法区 方法区结构&#xff1a; 特点&#xff1a; 运行时常量池…

从微积分到集合论(1630-1910)(历史简介)——第4章——现代积分理论的起源(Thomas Hawkins)

第 4 章 现代积分理论的起源 (The Origins of Modern Theories of Integration) Thomas Hawkins 目录 4.1 引言(Introduction) 4.2 Fourier分析与任意函数(Fourier analysis and arbitrary functions) 4.3 对Fourier问题的回应(Responses to Fourier)(1821-1854)…

《Linux运维总结:宝德服务器RAID开启(方式一)》

总结&#xff1a;整理不易&#xff0c;如果对你有帮助&#xff0c;可否点赞关注一下&#xff1f; 更多详细内容请参考&#xff1a;Linux运维实战总结 一、背景信息 说明&#xff1a;从客户那里退回来的一台宝德服务器&#xff0c;硬盘不见了&#xff0c;现在需要用两个2T的硬盘…

NY118NY120美光固态闪存NY124NY129

NY118NY120美光固态闪存NY124NY129 美光NY系列固态闪存深度解析&#xff1a;技术、性能与行业洞察 技术架构与核心创新 美光NY系列&#xff08;包括NY118、NY120、NY124、NY129等型号&#xff09;作为企业级存储解决方案的代表作&#xff0c;延续了品牌在3D NAND技术上的深厚…

Odoo 19 路线图(新功能)

Odoo 19 路线图(新功能) Odoo 19 路线图是Odoo官方针对下一版本的发布计划&#xff0c;将在自动化、合规性、用户体验、碳排放报告及本地化等领域推出超过16项新功能。本路线图详细阐述了Odoo 19如何在过往版本基础上进一步提升&#xff0c;助力企业优化销售、财务、运营及客户…

基于NXP例程学习CAN UDS刷写流程

文章目录 前言1.概述1.1 诊断报文 2.协议数据单元(N_PDU)2.1 寻址信息&#xff08;N_AI&#xff09;2.1.1 物理寻址2.1.2 功能寻址2.1.3 常规寻址&#xff08;Normal addressing&#xff09;2.1.4 常规固定寻址&#xff08;Normal fixed addressing&#xff09;2.1.5 扩展寻址&…

基于有效集MPC控制算法的直线同步电机simulink建模与仿真,MPC使用S函数实现

目录 1.课题概述 2.系统仿真结果 3.核心程序 4.系统仿真参数 5.系统原理简介 6.参考文献 7.完整工程文件 1.课题概述 有效集算法通过迭代地选择一组 "有效" 约束&#xff0c;将约束优化问题转化为一系列无约束或等式约束优化问题。直线同步电机 (Linear Synch…

让敏感数据在流转与存储中始终守护在安全范围

在企业数字化运营浪潮中&#xff0c;企业内部应用服务器面临着非法访问、数据泄露等风险&#xff0c;如何全面守护应用服务器文件安全&#xff0c;让敏感数据在流转与存储中始终守护在安全范围&#xff1f; 服务器白名单让数据流转安全又高效 天 锐 蓝盾的服务器白名单功能既…

【Linux】find 命令详解及使用示例:递归查找文件和目录

【Linux】find 命令详解及使用示例&#xff1a;递归查找文件和目录 引言 find 是 Linux/Unix 系统中强大的文件搜索工具&#xff0c;用于在目录层次结构中递归查找文件和目录。它提供了丰富的搜索条件和灵活的操作选项&#xff0c;可以满足从简单到复杂的各种文件查找需求。 …

【论文阅读笔记】万花筒:用于异构多智能体强化学习的可学习掩码

摘要 在多智能体强化学习&#xff08;MARL&#xff09;中&#xff0c;通常采用参数共享来提高样本效率。然而&#xff0c;全参数共享的流行方法通常会导致智能体之间的策略同质&#xff0c;这可能会限制从策略多样性中获得的性能优势。为了解决这一关键限制&#xff0c;我们提出…

负载均衡LB》》HAproxy

Ubuntu 22.04 安装HA-proxy 官网 资料 # 更新系统包列表&#xff1a; sudo apt update # 安装 HAproxy sudo apt install haproxy -y # 验证安装 haproxy -v # 如下图配置 Haproxy 在这里插入代码片》》》配置完之后 重启 Haproxy sudo systemctl restart haproxy 补充几…

UE 5 和simulink联合仿真,如果先在UE5这一端结束Play,过一段时间以后**Unreal Engine 5** 中会出现显存不足错误

提问 UE5报错如图。解析原因 回答 你遇到的这个错误提示是&#xff1a; “Out of video memory trying to allocate a rendering resource. Make sure your video card has the minimum required memory, try lowering the resolution and/or closing other applications tha…

Rust 控制流

文章目录 Rust 控制流if 表达式循环实现重复用 loop 重复代码从循环返回值循环标签用于区分多层循环while 条件循环用 for 循环遍历集合 Rust 控制流 在大多数编程语言中&#xff0c;根据条件是否为真来运行某些代码&#xff0c;以及在条件为真时重复运行某些代码&#xff0c;是…

Python 3.11.9 安装教程

前言 记录一下Windows环境下Python解释器的安装过程。 安装过程 1、安装程序下载 打开Python官网&#xff1a; 点击Downloads&#xff0c;选择Windows&#xff1a; 页面中找到需要的3.11.9版本&#xff0c;点击Download Windows installer (64-bit)下载&#xff1a; 2、…

【各种主流消息队列(MQ)对比指南】

主流消息队列对比分析 一、核心指标对比 特性/消息队列RabbitMQKafkaRocketMQActiveMQPulsar协议支持AMQP, MQTT, STOMP自定义协议JMS/自定义协议JMS, AMQP, MQTT, STOMPMQTT, AMQP, STOMP单机吞吐量万级百万级十万级万级百万级延迟微秒级&#xff08;低吞吐&#xff09;毫秒…

PySpark、Plotly全球重大地震数据挖掘交互式分析及动态可视化研究

全文链接&#xff1a;https://tecdat.cn/?p42455 分析师&#xff1a;Yapeng Zhao 在数字化防灾减灾的时代背景下&#xff0c;地震数据的深度解析成为公共安全领域的关键议题。作为数据科学工作者&#xff0c;我们始终致力于通过技术整合提升灾害数据的应用价值&#xff08;点击…