redux

redux

轻量级JavaScript应用状态管理库

Redux是一个轻量级的JavaScript状态管理库,用于创建行为一致且易于测试的应用。它通过单一状态树和纯函数reducer来管理应用状态,适用于客户端、服务器端和原生环境。Redux Toolkit作为官方推荐工具集,简化了Redux的使用流程,内置最佳实践,有效预防常见错误。Redux可与React等视图库搭配使用,也可独立应用于各种JavaScript项目中。

Redux状态管理JavaScript库ReactRedux ToolkitGithub开源项目

<a href='https://redux.js.org'><img src='https://avatars.githubusercontent.com/u/13142323?s=200&v=4' height='60' alt='Redux 标志' aria-label='redux.js.org' style="display: flex;align-items: center;"/>Redux</a>

Redux 是一个用于可预测和可维护的全局状态管理的 JavaScript 库。

它可以帮助你编写行为一致的应用程序,这些应用程序可以在不同环境(客户端、服务器和原生环境)中运行,并且易于测试。此外,它还提供了出色的开发者体验,例如结合时间旅行调试器的实时代码编辑

你可以将 Redux 与 React 或任何其他视图库一起使用。Redux 核心非常小(包括依赖项在内只有 2kB),并且拥有丰富的插件生态系统。

Redux Toolkit 是我们官方推荐的编写 Redux 逻辑的方法。它封装了 Redux 核心,并包含了我们认为对构建 Redux 应用程序至关重要的包和函数。Redux Toolkit 内置了我们建议的最佳实践,简化了大多数 Redux 任务,防止了常见错误,并使编写 Redux 应用程序变得更加容易。

GitHub 工作流状态 npm 版本 npm 下载量 Redux Discord 频道

安装

创建 React Redux 应用

使用 React 和 Redux Toolkit 启动新应用的推荐方式是使用我们官方的 Redux Toolkit + TS 模板,适用于 Vite,或者使用 Next.js 的 with-redux 模板创建新的 Next.js 项目。

这两种方式都已经为相应的构建工具正确配置了 Redux Toolkit 和 React-Redux,并附带了一个小型示例应用,演示了如何使用 Redux Toolkit 的几个功能。

# 使用我们的 Redux+TS 模板的 Vite # (使用 `degit` 工具克隆并提取模板) npx degit reduxjs/redux-templates/packages/vite-template-redux my-app # 使用 `with-redux` 模板的 Next.js npx create-next-app --example with-redux my-app

我们目前没有官方的 React Native 模板,但推荐以下模板用于标准 React Native 和 Expo:

npm install @reduxjs/toolkit react-redux

仅安装 Redux 核心库:

npm install redux

更多详情,请参阅安装文档页面

文档

Redux 核心文档位于 **https://redux.js.org**,包括完整的 Redux 教程以及关于一般 Redux 模式的使用指南:

Redux Toolkit 文档可在 https://redux-toolkit.js.org 找到,包括 Redux Toolkit 中所有 API 的 API 参考和使用指南。

学习 Redux

Redux 精要教程

Redux 精要教程是一个"自上而下"的教程,教授"如何正确使用 Redux",使用我们最新推荐的 API 和最佳实践。我们建议从这里开始。

Redux 基础教程

Redux 基础教程是一个"自下而上"的教程,从最基本的原理教授"Redux 如何工作",不使用任何抽象,并解释为什么存在标准的 Redux 使用模式。

帮助和讨论

Reactiflux Discord 社区#redux 频道 是我们所有与学习和使用 Redux 相关问题的官方资源。Reactiflux 是一个很棒的地方,可以在那里闲逛、提问和学习 - 请来加入我们!

在继续之前

Redux 是组织状态的有价值工具,但你也应该考虑它是否适合你的情况。请不要仅仅因为有人说你应该使用 Redux 就使用它 - 相反,请花些时间了解使用它的潜在好处和权衡。

以下是何时使用 Redux 合理的一些建议:

  • 你有相当数量的随时间变化的数据
  • 你需要一个单一的真实来源来管理你的状态
  • 你发现将所有状态保存在顶层组件中已经不够用了

是的,这些指南是主观和模糊的,但这是有充分理由的。每个用户和每个应用程序应该集成 Redux 的时机都是不同的。

关于 Redux 应该如何使用的更多思考,请参阅:<br>

基本示例

你的应用程序的整个全局状态被存储在单个 store 内的对象树中。 改变状态树的唯一方法是创建一个 action(描述发生了什么的对象)并将其 dispatch 到 store。 为了指定状态如何响应 action 进行更新,你需要编写纯 reducer 函数,这些函数根据旧状态和 action 计算新状态。

Redux Toolkit 简化了编写 Redux 逻辑和设置 store 的过程。使用 Redux Toolkit,基本的应用逻辑如下所示:

import { createSlice, configureStore } from '@reduxjs/toolkit' const counterSlice = createSlice({ name: 'counter', initialState: { value: 0 }, reducers: { incremented: state => { // Redux Toolkit 允许我们在 reducer 中编写"变更"逻辑。它 // 实际上并不会变更状态,因为它使用了 Immer 库, // 该库检测对"草稿状态"的更改并基于这些更改生成全新的 // 不可变状态 state.value += 1 }, decremented: state => { state.value -= 1 } } }) export const { incremented, decremented } = counterSlice.actions const store = configureStore({ reducer: counterSlice.reducer }) // 仍然可以订阅 store store.subscribe(() => console.log(store.getState())) // 仍然将 action 对象传递给 `dispatch`,但它们是为我们创建的 store.dispatch(incremented()) // {value: 1} store.dispatch(incremented()) // {value: 2} store.dispatch(decremented()) // {value: 1}

Redux Toolkit 允许我们编写更简短的逻辑,更易于阅读,同时仍然遵循原始的 Redux 核心行为和数据流。

标志

你可以在 GitHub 上找到官方标志。

更新日志

本项目遵循语义化版本。 每个版本,以及迁移说明,都记录在 GitHub 的 Releases 页面上。

许可证

MIT

编辑推荐精选

TRAE编程

TRAE编程

AI辅助编程,代码自动修复

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

热门AI工具生产力协作转型TraeAI IDE
博思AIPPT

博思AIPPT

AI一键生成PPT,就用博思AIPPT!

博思AIPPT,新一代的AI生成PPT平台,支持智能生成PPT、AI美化PPT、文本&链接生成PPT、导入Word/PDF/Markdown文档生成PPT等,内置海量精美PPT模板,涵盖商务、教育、科技等不同风格,同时针对每个页面提供多种版式,一键自适应切换,完美适配各种办公场景。

热门AI工具AI办公办公工具智能排版AI生成PPT博思AIPPT海量精品模板AI创作
潮际好麦

潮际好麦

AI赋能电商视觉革命,一站式智能商拍平台

潮际好麦深耕服装行业,是国内AI试衣效果最好的软件。使用先进AIGC能力为电商卖家批量提供优质的、低成本的商拍图。合作品牌有Shein、Lazada、安踏、百丽等65个国内外头部品牌,以及国内10万+淘宝、天猫、京东等主流平台的品牌商家,为卖家节省将近85%的出图成本,提升约3倍出图效率,让品牌能够快速上架。

iTerms

iTerms

企业专属的AI法律顾问

iTerms是法大大集团旗下法律子品牌,基于最先进的大语言模型(LLM)、专业的法律知识库和强大的智能体架构,帮助企业扫清合规障碍,筑牢风控防线,成为您企业专属的AI法律顾问。

SimilarWeb流量提升

SimilarWeb流量提升

稳定高效的流量提升解决方案,助力品牌曝光

稳定高效的流量提升解决方案,助力品牌曝光

Sora2视频免费生成

Sora2视频免费生成

最新版Sora2模型免费使用,一键生成无水印视频

最新版Sora2模型免费使用,一键生成无水印视频

Transly

Transly

实时语音翻译/同声传译工具

Transly是一个多场景的AI大语言模型驱动的同声传译、专业翻译助手,它拥有超精准的音频识别翻译能力,几乎零延迟的使用体验和支持多国语言可以让你带它走遍全球,无论你是留学生、商务人士、韩剧美剧爱好者,还是出国游玩、多国会议、跨国追星等等,都可以满足你所有需要同传的场景需求,线上线下通用,扫除语言障碍,让全世界的语言交流不再有国界。

讯飞绘文

讯飞绘文

选题、配图、成文,一站式创作,让内容运营更高效

讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。

AI助手热门AI工具AI创作AI辅助写作讯飞绘文内容运营个性化文章多平台分发
商汤小浣熊

商汤小浣熊

最强AI数据分析助手

小浣熊家族Raccoon,您的AI智能助手,致力于通过先进的人工智能技术,为用户提供高效、便捷的智能服务。无论是日常咨询还是专业问题解答,小浣熊都能以快速、准确的响应满足您的需求,让您的生活更加智能便捷。

imini AI

imini AI

像人一样思考的AI智能体

imini 是一款超级AI智能体,能根据人类指令,自主思考、自主完成、并且交付结果的AI智能体。

下拉加载更多