在 Redux 中,"Action Creators" 和 "Reducers" 是两个非常重要的概念。本文将会详细介绍它们的含义、使用场景以及如何正确地使用。
什么是 "Action Creators"
在 Redux 中,"Action Creators" 用来创建 Action。Action 是一个简单的对象,它有一个 "type" 字段和一些 "payload" 数据。"Action Creators" 用来生成这些 Action 对象。
下面是一个 "Action Creators" 的示例:
const ADD_TODO = "ADD_TODO"; function addTodoAction(todo) { return { type: ADD_TODO, payload: todo, }; }
上面的代码中,我们定义了一个 "ADD_TODO" 的常量作为 Action 的类型,然后定义了一个 "addTodoAction" 的函数来生成一个包含 "ADD_TODO" 类型和数据的 Action 对象。
什么是 "Reducers"
在 Redux 中,"Reducers" 用来更新 State。Reducer 是一个纯函数,它接收当前的 State 和一个 Action 作为参数,并返回一个新的 State。Reducer 不能改变原有的 State,它应该始终返回一个新的 State 对象。
下面是一个简单的 "Reducers" 的示例:
const ADD_TODO = "ADD_TODO"; function todosReducer(state = [], action) { switch (action.type) { case ADD_TODO: return [...state, action.payload]; default: return state; } }
上面的代码中,我们定义了一个初始的 State,即一个空数组。然后定义了一个 "todosReducer" 的函数来处理 Action。当收到一个 "ADD_TODO" 的 Action 时,Reducer 会将新的 todo 添加到原来的 State 中并返回一个新的 State 对象。
使用示例
下面是一个简单的使用示例:
import { createStore } from "redux"; // 定义 Action Types const ADD_TODO = "ADD_TODO"; // 定义 Action Creators function addTodoAction(todo) { return { type: ADD_TODO, payload: todo, }; } // 定义 Reducers function todosReducer(state = [], action) { switch (action.type) { case ADD_TODO: return [...state, action.payload]; default: return state; } } // 创建 Store const store = createStore(todosReducer); // 发起 Action store.dispatch(addTodoAction("Buy Milk")); // 获取 State const state = store.getState(); console.log(state); // ["Buy Milk"]
上面的代码中,我们首先使用 Redux 的 "createStore" 函数创建了一个 Store 对象,并将 "todosReducer" 函数作为参数传入。然后我们使用 "addTodoAction" 函数创建了一个包含 "ADD_TODO" 类型的 Action 对象并发起了一个 Action。
最后,我们使用 "store.getState()" 函数获取当前的 State,并将其打印出来。可以看到,我们成功地将 "Buy Milk" 添加到了 State 中。
总结
"Action Creators" 和 "Reducers" 是 Redux 中两个非常重要的概念。使用 "Action Creators" 可以生成 Action 对象,使用 "Reducers" 可以更新 State。在实际开发中,使用 Redux 可以帮助我们更好地管理应用的 State,提高开发效率和应用质量。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/6593b4c7eb4cecbf2d85acb9