根据我的理解,这是spread operator的工作方式:
x=[1,2,3];
y=[...x,4,5];
//这与y=[1,2,3,4,5]相同
const initialState={
ingredients: [
new Ingredient('Apples', 5),
new Ingredient('Tomatoes', 10),
]
};
export function shoppingListReducer( state=initialState, action:ShoppingListActions.ShoppingListActions ) {
switch(action.type) {
case ShoppingListActions.ADD_INGREDIENT:
return {
...state,
ingredients:[...state.ingredients,action.payload ]
}
default:
return state;
}
return {
...state,
ingredients:[...state.ingredients,action.payload ]
}
有效载荷属于以下类型:
export class Ingredient {
constructor(public name: string, public amount: number) {}
}
基本上,您试图创建一个具有state
object的所有属性的对象,并用值重写其属性appitions
,作为state.appitions
数组和action.payload
中的所有值。这可能是为了将result对象的引用与state对象分离。
var state = {
"someprop" : "somevalue",
"ingredients" : ["a", "b"]
};
var action = {
"payload" : 4
};
var result = {
...state,
ingredients:[...state.ingredients,action.payload ]
};
state.someprop = "somevalue1"; // does not alter result object
state.ingredients.push("c"); // does not alter result object
console.log(result);
我想写一个brainfuck口译员,但我错过了一些上下文或其他东西。应该被调用以处理“
我是Hibernate和JPA的新手,我对这个注释有问题。有人能简单地解释一下这个注释到底在做什么吗?因为在这种情况下,文档对我来说很难理解。 编辑我明白什么是持久上下文,但在代码中,我有这样的例子: 我对@PerustenceContext做什么有问题。抱歉,也许我没有具体说明。
有人能解释一下为什么操作符优先级适用于像JavaScript中的和这样的逻辑操作符吗?这在一个操作中意味着什么: 首先计算,因为在JavaScript中,运算符的优先级高于运算符。根据我如何知道不会被JavaScript引擎计算,因为在运算符之前有一个文字,而当某个东西在运算符之前是时,运算符之后的东西不会被计算这在JavaScript中称为“逻辑运算符短路”另一个示例是: 真警报() 即使函数调
我对javascript还是个新手,只知道基本知识。有人能解释一下下面的代码,就像在调用init函数时发生的流中一样吗? 我对下面代码的理解是,一旦调用init函数,就会设置一个全局变量输出,该输出映射到一个带有id输出的HTML元素。然后调用。这将创建一个WebSocket对象。这之后是我不完全理解的部分。 在行中,WebSocket对象有一个名为open的属性,我们将它设置为任何返回的属性 。