我试图重新创建redux购物车示例。但是我发现很难理解下面的代码行,因为我对ES6很新。
答案 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
的更多信息。
希望这有帮助!