Redux Action

11 篇文章 0 订阅

什么是Action

Action是数据从应用传递到 store/state 的载体。是store数据的唯一来源。

action是一个对象,用于描述改变应用程序状态的事件(或者说根本作为reducer的参数而存在的,为了给reducer传入新的数据、事件的类型等。通过dispatch调用后发给reducer

如何定义

const  ADD_TODO =  'ADD_TODO'
{
    type: ADD_TODO,
    index: 5
}

action 内必须使用一个字符串类型的 type 字段来表示将要执行的动作。当应用规模越来越大时,建议使用单独的模块或文件来存放 action。

人们通常声称常量不是必要的。对于小项目也许正确。 对于大的项目,将 action type字段 定义为常量有如下好处:

  • 帮助维护命名一致性,因为所有的 action type 汇总在同一位置。
  • 有时,在开发一个新功能之前你想看到所有现存的 actions 。而你的团队里可能已经有人添加了你所需要的action,而你并不知道。
  • Action types 列表在 Pull Request 中能查到所有添加,删除,修改的记录。这能帮助团队中的所有人及时追踪新功能的范围与实现。
  • 如果你在 import 一个 Action 常量的时候拼写错了,你会得到 undefined 。在 dispatch 这个 action 的时候,Redux 会立即抛出这个错误,你也会马上发现错误。

应该尽量减少在 action 中传递的数据。比如上面的例子,传递 index 就比把整个任务对象传过去要好。

Action 创建函数

在 Redux 中的 action 创建函数只是简单的返回一个 action:

function addTodo(text) {
  return {
    type: ADD_TODO,
    text
  }
}

这样做将使 action 创建函数更容易被移植和测试。

调用

dispatch(addTodo(text))

或者创建一个 被绑定的 action 创建函数 来自动 dispatch:

const boundAddTodo = text => dispatch(addTodo(text))
const boundCompleteTodo = index => dispatch(completeTodo(index))

然后直接调用它们:

boundAddTodo(text);
boundCompleteTodo(index);
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值