首页 > 解决方案 > redux 操作中的值是否需要键?

问题描述

redux 文档(在 basics > actions 下)使用这个作为他们的操作示例:

{ type: ADD_TODO, text: 'Build my first Redux app' }

然而,他们将此作为动作创建者的示例:

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

在第一个示例中,动作对象中的每个值都有一个关联的键 ( typeand text),但是,这与第二个示例之间的区别是什么,其中动作仅指定键,type并且仅在动作中包含参数的值?什么时候应该使用每种方法?

另外,这第二种方法是否仅仅意味着变量名被用作键?如果是这样,你可以在同一个动作创建者中为多个不同的变量做吗?

编辑:为歧义道歉。本质上我想知道的是两个动作对象之间的区别,而不是动作与动作创建者的区别。

又名这个

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

相对

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

标签: redux

解决方案


第二个示例显示了使用动作创建器生成第一个示例中的动作的示例。

动作创建者通常与使用函数生成对象具有相同的好处,即您可以减少冗余,并且将来可以在一个地方轻松修改动作类型或有效负载。

出于这个原因,在 Redux 中看到这种模式很常见:

dispatch(addTodo('Do laundry'));

相对于:

dispatch({
  type: ADD_TODO,
  text: 'Do laundry',
});

尽管它们的结果相同。

更新问题后编辑:

第二个示例使用es6 简写来定义text键。所以{text}等同于{text: text}


推荐阅读