我想了解React& Redux更好。最近我一直在使用这里的例子:https://github.com/reactjs/redux/blob/master/examples/shopping-cart/src/reducers/products.js
我很难掌握这些方面:
... action.products.reduce((obj,product)=> {
obj [product.id] =产品
返回obj
},{})
和[productId]:产品(州[productId],行动)
有人可以解释一下发生了什么吗?
const byId = (state = {}, action) => {
switch (action.type) {
case RECEIVE_PRODUCTS:
return {
...state,
...action.products.reduce((obj, product) => {
obj[product.id] = product
return obj
}, {})
}
default:
const { productId } = action
if (productId) {
return {
...state,
[productId]: products(state[productId], action)
}
}
return state
}
答案 0 :(得分:1)
你的问题不明确,但我会尽力回答我的能力。 ...
(三个点)被称为spread operator,它是"合并"的一种方式。一个对象(或数组)到另一个对象(或数组)。这是一个例子:
const objA = {
field_1: "my value",
field_2: "my other value"
};
const newObject = {
...objA,
field_3: "my third value"
};
console.log(newObject); // {
// field_1: "my value",
// field_2: "my other value",
// field_3: "my third value"
// }
它基本上等同于以下内容:
const objA = {
field_1: "my value",
field_2: "my other value"
};
const newObject = Object.assign({}, objA, { field_3: "my third value" });
除此之外还有更多内容,所以请参阅文档。
[productId]: products(state[productId], action)
是一种将变量用作对象键的方法。这大致相当于:
let objA = {
field_1: "my value",
};
const myKey = "field_2";
objA[myKey] = "my other value";
从技术上讲,它不是React语法,而是评估ES6-7语法。