1. 什么是 Redux-Action-Creator ?
Redux-Action-Creator 是一个用于简化 Redux 开发的包,可以更快地创建 Redux 动作并移除模板代码。这个包可以让 Redux 开发更加容易,特别对于 Redux 熟悉度不高的人可以使用。Redux-Action-Creator 包含两个核心部分:
- Action creators:它是一个工厂函数,用于生成 Redux 动作。它简化了动作对象的创建,因为所有的属性都在工厂函数中设置,而不是在每个 Redux 动作对象中手动设置。
- Action types:包括一个或多个仅用于标识 Redux 动作的字符串类型。它们作为 Redux reducer 的 switch 语句的案例,用于确定如何处理每个 Redux 动作。
2. 安装
使用 NPM 可以方便地安装 Redux-Action-Creator 包。您可以直接执行:
npm install redux-action-creator
3. 创建动作生成器
使用redux-action-creator创建动作生成器:
import actionCreator from 'redux-action-creator'; const myAction = actionCreator('MY_ACTION', 'data');
这将创建一个名为“MY_ACTION”的新动作生成器。这个动作生成器的数据输入将存储在一个名为“data”的属性中。生成器会返回一个 Redux 动作对象,它包含了动作类型和数据属性,如下所示:
{ type: 'MY_ACTION', data: { ... } }
您可以在需要生成这种类型的 Redux 动作时使用 myAction:
const myReduxAction = myAction({ ... });
4. 创建动作类型
使用redux-action-creator创建动作类型:
import actionCreator from 'redux-action-creator'; const myActionTypes = actionCreator('MY_ACTION_TYPE');
这将创建一个只有一个动作类型“MY_ACTION_TYPE”的动作类型生成器。与动作生成器一样,您可以在需要创建这种类型的 Redux 动作类型时使用 myActionTypes:
console.log(myActionTypes); // 'MY_ACTION_TYPE'
5. 将 Action Creator 与 Redux 应用程序集成
可以将生成的动作创建函数添加到 Reducer 中,像这样:
-- -------------------- ---- ------- ------ - --------------- - ---- -------- ------ ------------- ---- ----------------------- ----- -------- - -------------------------- -------- ----- --------- - ------ - --- ------- -- - ------ ------------- - ---- -------------- ------ - --------- ----- ----------- -- -------- ------ ------ - -- ------ ------- ----------------- ---------- ---
在这个例子中,myReducer 接收 myAction 类型的 Redux 动作,并简单地将动作数据添加到原始状态中。
6. 将多个动作类型一起合并
您可以将多个动作类型一起合并,以让你在创建 Reducer 时使用相同的命名空间。例如:
import actionCreator from 'redux-action-creator'; const types = actionCreator('INCREMENT_COUNTER', 'DECREMENT_COUNTER');
这样,您只需要使用一个命名空间和一个 switch语句来处理这两种类型的 Redux 动作,而不是为每种类型单独编写一个 switch 语句。
7. 总结
Redux-Action-Creator 是一个用于简化 Redux 开发的包,它允许您更快地创建 Redux 动作并移除模板代码。通过使用 Redux-Action-Creator ,可以使 Redux 开发更加容易,特别对于 Redux 熟悉度不高的人可以使用。在您的下一个 Redux 项目中尝试使用这个包!
8. 示例代码
-- -------------------- ---- ------- -- ------------------ ------ ------------- ---- ----------------------- ----- ----- - -------------- ----------- -------------- -------------- ---------------- -- ------ ------- ------ -- -------------- ------ ----- ---- ---------------- ----- ------- - --------------- ----- ---------- - ------------------ ----- ---------- - ------------------ ----- ------------ - -------------------- ------ - -------- ----------- ----------- ------------- -- -- -------------- ------ - --------------- - ---- -------- ------ ----- ---- ---------------- ----- ----------- - ------ - --- ------- -- - ------ ------------- - ---- --------------- ------ ---------- ------------- ---- ------------------ ----- - - --------------------------- ------ ------------------ --- ---------------- - ---- ---- ------------------ ------ ---------------- -- ----- --- ------------ - ---------- - ---- -- -------- ------ ------ - -- ----- ------------- - ------ - ----------- ------- -- - ------ ------------- - ---- -------------------- ------ -------------- -------- ------ ------ - -- ------ ------- ----------------- ------ ------------ ------- -------------- ---
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/60067009e361a36e0bce8bdf