我正在试用Angular中的NgRx(redux)和下面示例中的...state
,我不能完全理解。我搜索了它,并将其理解为散布,但不确定为什么接口状态
中的数据属性会在reducer的开关
的返回{}
块中重复,因为...会散布它们?有谁能帮我理解一下吗?
export interface State {
sessionData: Map<string, string>;
requesting: boolean;
hasError: boolean;
status: StatusModel;
}
export function sessionReducer(state: State = INITIAL_STATE, action: Session.Actions): State {
switch (action.type) {
case Session.REQUEST_SESSION_DATA:
return {
...state,
requesting: true,
hasError: false,
status: undefined,
};
}
}
附注:我看了这里的线程,通常得到的传播就是这样,传播开来。但是这里在redux/ngrx的上下文中,试图理解为什么return{}
具有...state
和三个附加属性。
状态的要点是它是不可变的(返回的是一个新对象,而不是一个修改过的对象)。因此,如果您想要修改状态,向它添加新的值,您需要返回当前状态加上您想要添加到前一个状态的新值。在使用扩展运算符...
的示例中,您返回的是一个新的不可变对象,该对象包含以前的状态以及三个新属性requesting
、haserror
和status
。您可以考虑这样做:
export function sessionReducer(state: State = INITIAL_STATE, action: Session.Actions): State {
switch (action.type) {
case Session.REQUEST_SESSION_DATA:
state.requesting = true;
state.hasError: false;
state.status: undefined;
return state;
}
}
但是你不能这样做,因为你正在打破状态的哲学,新的不可变的对象而不是修改过的:)
在您的示例中,我们需要知道initial_state
是如何初始化的,但我认为它只包含sessiondata
属性。因此,在该示例中,您将返回sessiondata
以及其余属性。
在下面的链接中,您可以看到spread运算符是Redux世界中常用的运算符,用于将当前状态返回为新对象(这是React的Redux示例,但它在Angular中的工作方式完全相同)。
在Angular中,使用redux
模式和onpush
更改检测策略是一种非常常见的模式,因为您告诉Angular只检查组件@input
中的引用更改,而不是逐个属性比较对象。那是性能上的一大优势。
扩展算子在Redux中的应用
我在Angular和中试用了NgRx(redux)。在下面的示例中,我不能完全理解。我搜索了它,通常将其理解为扩展,但不确定为什么中的数据属性在简化程序的的块中重复,因为...无论如何都会扩展它们?有人能帮我理解一下吗? PS:我已经看过这里的线程,通常得到的是,扩散就是这样,扩散开来。但是在Redux/ngrx上下文中,我们试图理解为什么具有和其他三个属性。
问题内容: 这是我的代码: 这是我从解释器运行输出时的结果: 如果您注意到输出,则创建巨大的列表会消耗621.5 MB,而删除它只会释放152.6 MB。当我检查文档时,我发现以下语句: 因此,我猜想它并没有删除对象本身,而只是取消了绑定。 但是,它在解除绑定方面做了什么工作,从而释放了很大的空间(152.6 MB) 。有人可以痛苦地解释我在这里发生什么吗? 问题答案: Python是一种垃圾收集
我很难理解的概念,因为根据视图,它做不同的事情。根据官方的留档,这是一个 用于根据系统窗口(如状态栏)调整视图布局的布尔内部属性。如果为true,则调整此视图的填充以为系统窗口留出空间。 现在,检查class我可以看到,当设置为时,窗口会插入(状态栏、导航栏…)应用于视图填充,该填充根据上面引用的文档工作。这是守则的相关部分: 有了新的材料设计,有了新的类别,这些类别广泛地使用了这面旗帜,这就是混
我知道是“最高的SDK版本,您的应用程序已知可以使用”,但这有什么意义呢?我设置了22,我的应用程序在API25设备上运行良好。这不是为了防止在更多的api版本上安装吗?如果不是,那又是为了什么呢?
我对上面的代码感到困惑,其中片段有一个叫做的东西。 我不太清楚setArguments(args)到底是做什么的,我也想知道getArguments()方法是做什么的,因为我在查看开发人员时看到了它。Android通用域名格式。