想象一下可观察的以下订阅:
this.todosStore.subscribe((todos) => {
this.todoContent = todos.content;
this.todoVisibility = todos.visibility;
});
为了进行订阅工作,我在更改属性后返回克隆对象:
switch (action.type) {
case SAVE:
action.payload.id = state.id++;
state.content.push(action.payload);
return _.cloneDeep(state);
是否有任何替代或更好的方式使订阅工作?例如可以/我应该以某种方式摆脱_.cloneDeep(状态)吗?
答案 0 :(得分:0)
我完全依赖Object.assign
来获取新的引用(触发更改检测)
所以在你的例子中它看起来像这样:
switch (action.type) {
case SAVE:
let newContentElement = action.payload
newContentElement.id = state.id++
return Object.assign({}, state, {
content: [..state.content, newContentElement]
})
我会尽量避免使用库来制作副本。它迫使你更好地理解,大多数时候Object.assign就足够了。