什么" [productId] :(州[productId] || 0)+ 1"意思?

时间:2016-10-14 05:27:42

标签: javascript ecmascript-6 redux

我试图重新创建redux购物车示例。但是我发现很难理解下面的代码行,因为我对ES6很新。

[productId]: (state[productId] || 0) + 1

1 个答案:

答案 0 :(得分:1)

好吧,再次阅读该文件。这是创建intialState的地方:

const initialState = {
  addedIds: [],
  quantityById: {}
}

现在是quantityById功能。它被initialState.quantityById传递为state

const quantityById = (state = initialState.quantityById, action) => {

以下行使用spread operator构造要返回的对象。

      return { ...state,
        [productId]: (state[productId] || 0) + 1
      }

{ ...state表示从state变量获取内容,这意味着所有属性都将出现在新对象中。然后[productId]: (state[productId] || 0) + 1会将 [productId] 的值设置为来自传递的state对象state[productId]0的值,如果此ID未在{ {1}}对象并向其添加state

总的来说,如果该行未通过1对象,则会添加[productId],或者在从state对象复制后更新。

此处还可以找到有关spread operator的更多信息。

希望这有帮助!