首页 › 问答 › Linux › 正文 Redux 核心概念怎么入门?新手该怎么学 Redux 基础? 2026-05-01 22:00:42 约 1 分钟读完 42 阅 文章导读 在 Redux 中,action creator 是一个返回 action 对象的函数。Action creator 看似多余的一步,但它们使代码更具可移植性和易测试性。从 action creator 返回的 action 对象会被发送到应用中的所有不同的 reducer。 📋 目录 Ⅰ 什么是 Action Creator? Ⅱ 组合 Reducer Ⅲ 什么是 Store? Ⅳ Redux 中的数据流 Ⅴ 结论 A A 博客文档招聘获取支持联系销售什么是 Action Creator? 在 Redux 中,action creator 是一个返回 action 对象的函数。Action creator 看似多余的一步,但它们使代码更具可移植性和易测试性。从 action creator 返回的 action 对象会被发送到应用中的所有不同的 reducer。 根据 action 的类型,reducer 可以选择返回它们状态片段的新版本。新返回的状态片段会被注入到应用状态中,然后应用状态再被注入回我们的 React 应用,从而导致所有组件重新渲染。 假设用户点击了一个按钮,我们调用一个 action creator,它是一个返回 action 的函数。这个 action 有一个 type,描述了刚刚触发的 action 类型。 这是一个示例 action creator: export function addTodo({ task }) { return { type: 'ADD_TODO', payload: { task, completed: false }, } } // 示例返回值的例子: // { // type: 'ADD_TODO', // todo: { task: '🛒 get some milk', completed: false }, // } 这是一个处理 ADD_TODO 类型 action 的简单 reducer: export default function(state = initialState, action) { switch (action.type) { case 'ADD_TODO': const newState = [...state, action.payload]; return newState; // 处理更多 case,如 'TOGGLE_TODO'、'DELETE_TODO' 等 default: return state; } } 所有 reducer 都会处理这个 action。不对特定 action 类型感兴趣的 reducer 只是返回相同状态,而感兴趣的 reducer 返回新状态。现在,所有组件都会收到状态变化的通知。一旦收到通知,所有组件将使用新的 props 重新渲染: { currentTask: { task: '🛒 get some milk', completed: false }, todos: [ { task: '🛒 get some milk', completed: false }, { task: '🎷 Practice saxophone', completed: true } ], } 组合 Reducer Redux 提供了一个名为 combineReducers 的函数,它执行两项任务: 它生成一个函数,该函数会根据键选择状态片段后调用我们的 reducer。 然后将结果再次组合成单个对象。 什么是 Store? 我们一直提到神秘的 store,但还没有谈及 store 到底是什么。 在 Redux 中,store 是将 action(代表发生了什么)和 reducer(根据这些 action 更新状态)联系起来的对象。一个 Redux 应用中只有一个单一的 store。 Store 有几个职责: 通过 getState() 允许访问状态。 通过 dispatch(action) 允许更新状态。 持有整个应用状态。 使用 subscribe(listener) 注册监听器。 通过 subscribe(listener) 返回的函数注销监听器。 基本上,要创建 store,我们只需要 reducer。我们提到过 combineReducers 可以将多个 reducer 组合成一个。现在,要创建 store,我们将导入 combineReducers 并将其传递给 createStore: import { createStore } from 'redux'; import todoReducer from './reducers'; const store = createStore(todoReducer); 然后,我们在应用中使用 store 的 dispatch 方法来分发 action,如下所示: store.dispatch(addTodo({ task: '📖 Read about Redux'})); store.dispatch(addTodo({ task: '🤔 Think about meaning of life' })); // ... Redux 中的数据流 Redux 的众多优势之一是,应用程序中的所有数据都遵循相同的生命周期模式。你的应用的逻辑更加可预测且易于理解,因为 Redux 架构遵循严格的单向数据流。 Redux 中数据生命周期的 4 个主要步骤 应用内部的一个事件触发了对 store.dispatch(actionCreator(payload)) 的调用。 Redux store 用当前 state 和 action 调用根 reducer。 根 reducer 将多个 reducer 的输出组合成单个 state tree。 export default const currentTask(state = {}, action){ // 处理这部分 state return newState; }; export default const todos(state = [], action){ // 处理这部分 state return newState; }; export default const todoApp = combineReducers({ todos, currentTask, }); 当一个 action 被发出时,todoApp 将调用两个 reducer,并将两组结果组合成单个 state tree: return { todos: nextTodos, currentTask: nextCurrentTask, }; Redux store 保存根 reducer 返回的完整 state tree。新 state tree 现在就是你应用的 nextState。 结论 用很少的文字涵盖了大量内容,如果你还没有完全理解所有部分是如何组合在一起的,不要感到畏惧。Redux 提供了一种非常强大的管理应用 state 的模式,因此需要一些练习才能习惯这些概念是很自然的。 了解更多,请查看这些资源: 官方 Redux 文档 Redux 教程,由其创建者 Dan Abramov 讲解 深入的初学者教程 🎩 在未来的文章中,我们将探讨更高级的话题,比如使用 Redux-Saga 或 Redux Thunk 处理异步事件。 感谢与 Community 一起学习。请查看我们提供的计算、存储、网络和管理数据库服务。 了解更多我们的产品