查看redux todomvc,为什么以下{}之间没有键?例如在下面的textid之前没有键?有点困惑。

import * as types from '../constants/ActionTypes'

export const addTodo = text => ({ type: types.ADD_TODO, text })
export const deleteTodo = id => ({ type: types.DELETE_TODO, id })
export const editTodo = (id, text) => ({ type: types.EDIT_TODO, id, text })
export const completeTodo = id => ({ type: types.COMPLETE_TODO, id })
export const completeAll = () => ({ type: types.COMPLETE_ALL })
export const clearCompleted = () => ({ type: types.CLEAR_COMPLETED })

欢迎任何意见。谢谢。

更新

感谢您的回答和评论。我发现我的问题有点愚蠢。目前,我正在学习react和redux的乐趣。我对es2015不熟悉。有时,我无法区分2015es新语法和redux语法。谢谢。

最佳答案

在ES2015(和JSX)对象初始化器中,您可以通过仅给出变量名而不在变量后加上值来在对象上创建属性。该属性的名称将与该变量的名称相同,并且该属性的值将是该变量的值:

let one = 1;
let obj = {one};
console.log(obj.one); // 1


因此,在这条线上:
export const addTodo = text => ({ type: types.ADD_TODO, text })

并不是键(属性名称)不存在,而是text属性的值(显式)不存在。就像是这样写的:
export const addTodo = text => ({ type: types.ADD_TODO, text: text })
// ---------------------------------------------------------^^^^^^

这只是简写。但是令人惊讶的是它有用的频率。

关于javascript:为什么javascript对象中没有键,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40468363/

10-13 04:19