redux - redux 操作中的值是否需要键?
问题描述
redux 文档(在 basics > actions 下)使用这个作为他们的操作示例:
{ type: ADD_TODO, text: 'Build my first Redux app' }
然而,他们将此作为动作创建者的示例:
function addTodo(text) { return { type: ADD_TODO, text } }
在第一个示例中,动作对象中的每个值都有一个关联的键 ( type
and text
),但是,这与第二个示例之间的区别是什么,其中动作仅指定键,type
并且仅在动作中包含参数的值?什么时候应该使用每种方法?
另外,这第二种方法是否仅仅意味着变量名被用作键?如果是这样,你可以在同一个动作创建者中为多个不同的变量做吗?
编辑:为歧义道歉。本质上我想知道的是两个动作对象之间的区别,而不是动作与动作创建者的区别。
又名这个
function addTodo(text) {
return {
type: ADD_TODO,
text
}
}
相对
function addTodo(text) {
return {
type: ADD_TODO,
data: text
}
}
解决方案
第二个示例显示了使用动作创建器生成第一个示例中的动作的示例。
动作创建者通常与使用函数生成对象具有相同的好处,即您可以减少冗余,并且将来可以在一个地方轻松修改动作类型或有效负载。
出于这个原因,在 Redux 中看到这种模式很常见:
dispatch(addTodo('Do laundry'));
相对于:
dispatch({
type: ADD_TODO,
text: 'Do laundry',
});
尽管它们的结果相同。
更新问题后编辑:
第二个示例使用es6 简写来定义text
键。所以{text}
等同于{text: text}
。
推荐阅读
- php - 我需要删除嵌套循环并使用字符串连接
- rabbitmq - 我可以在 Rabbit 服务器上看到我的消息吗?
- ruby-on-rails - 来自 Ruby 的 Google Earth Engine REST API 身份验证失败
- angular - 尽管在异步管道订阅的管道中,Observable 似乎仍然存在
- dpdk - ====== Pktgen 出现段错误
- python - 无法使用 python 更新 JSON
- php - 为什么我的 cron 工作不在 laravel 中工作?
- c - C 中的文件传输 - Linux
- javascript - 在电子应用程序中接收管道数据流
- django - 将 Django Enum 约束强制到 PostgreSQL 端