现在我知道还有类似的问题here和here,但它们只给了我一半的答案
基本上我的减速器文件中发生了什么,我有一个像这样的更新方法
import * as UserActions from '../actions/user.actions';
import { UserDto } from '@shared/service-proxies/service-proxies';
export function userReducer(state: UserDto[] = null, action:
UserActions.Actions) {
switch (action.type) {
case UserActions.SET_USERS:
return action.payload;
case UserActions.UPDATE_USER:
if (state === null) { state = []; }
let index = state.findIndex(x => x.id === action.payload.id);
if (index !== -1) {
state[index] = action.payload;
} else {
state.push(action.payload);
}
return state;
default:
return state;
}
}
现在发生的事情是调用更新,更改状态并返回新状态,但是它没有触发我的状态订阅,现在从其他我可以收集到的问题中,这是因为“技术上”是相同的状态对象,如果某些对象已更改,在这种情况下如何触发我的订阅?
我试图像这样创建一个新变量,然后返回该变量,但它仍然认为它是同一对象
let newState = state;
return state
什么是最好的解决方案?
答案 0 :(得分:0)
问题就如您所说的那样,您是在改变现有状态而不是创建新状态。在大多数情况下,您应该使用传播运算符返回新对象。
Using sw As IO.StreamWriter = New IO.StreamWriter("C:\Users\dlawrence\Desktop\Fred.txt")
Dim tags() As Integer = {1, 3, 6, 2, 6, 2}
Dim max As Integer = tags(0)
For i = 1 To tags.Count - 1
If tags(i) > max Then
max = tags(i)
End If
sw.WriteLine(tags(i).ToString) 'EDIT moved this out of the If
Next
End Using