如何在不改变的情况下替换状态?
How to replace an state without mutating?
我正在使用 React 和 Redux,我需要用更新的数据更新我的状态。我的状态包含这样的对象数组:
[
{
"messages": [/*somedata*/],
"users": [/*somedata*/],
"avatar": "/*somedata*/",
"_id": "/*somedata*/",
"type": "/*somedata*/",
"createdAt": "/*somedata*/",
"__v": 0
},
{
"messages": [/*somedata*/],
"users": [/*somedata*/],
"avatar": "/*somedata*/",
"_id": "/*somedata*/",
"type": "/*somedata*/",
"createdAt": "/*somedata*/",
"__v": 0
}
]
所以在这个减速器中,我只想用我的有效载荷替换或更新整个状态数组,但不改变我的状态。我的有效负载还包含与上面相同的对象数组,但具有更新的数据。
const chatsReducer = (state = chats, {type, payload}) => {
switch (type) {
case '@updateChats':
return state = payload //i need something like this but without mutating
default:
return state
}
}
这应该对您有所帮助,它会创建一个新数组并用 payload
数组中的所有对象填充它。
const chatsReducer = (state=chats, {type, payload}) => {
switch (type) {
case '@updateChats':
return [ ...payload ];
default:
return [ ...state ];
}
}
我正在使用 React 和 Redux,我需要用更新的数据更新我的状态。我的状态包含这样的对象数组:
[
{
"messages": [/*somedata*/],
"users": [/*somedata*/],
"avatar": "/*somedata*/",
"_id": "/*somedata*/",
"type": "/*somedata*/",
"createdAt": "/*somedata*/",
"__v": 0
},
{
"messages": [/*somedata*/],
"users": [/*somedata*/],
"avatar": "/*somedata*/",
"_id": "/*somedata*/",
"type": "/*somedata*/",
"createdAt": "/*somedata*/",
"__v": 0
}
]
所以在这个减速器中,我只想用我的有效载荷替换或更新整个状态数组,但不改变我的状态。我的有效负载还包含与上面相同的对象数组,但具有更新的数据。
const chatsReducer = (state = chats, {type, payload}) => {
switch (type) {
case '@updateChats':
return state = payload //i need something like this but without mutating
default:
return state
}
}
这应该对您有所帮助,它会创建一个新数组并用 payload
数组中的所有对象填充它。
const chatsReducer = (state=chats, {type, payload}) => {
switch (type) {
case '@updateChats':
return [ ...payload ];
default:
return [ ...state ];
}
}