我有以下状态:
{
list: {
key1: {
value: [{a: 'a'}, {b: 'b'}],
fetching: true
},
key2: {
value: [{c: 'c'}],
fetching: true
}
}
}
我想为某个键提供一个新值,并用此替换当前状态。但我也希望价值与前一个相结合。例如,通过以下操作:
key1: {
value: [{d: 'd'}],
fetching: false
}
我会得到以下状态:
{
list: {
key1: {
value: [{a: 'a'}, {b: 'b'}, {d: 'd'}],
fetching: false
},
key2: {
value: [{c: 'c'}],
fetching: true
}
}
}
如何在reducer中执行此操作,以便案例保持不变? (使用...
点差运算符,而不是ImmutableJS
)。
编辑:
处理(应该)的减速器的一部分:
case "FOO_BAR":
const key = action.payload.key;
const newList = {...state.list};
newList[key] = action.payload.newObject; // {value: ..., fetching: ...}
return {
...state,
list: newList
}
答案 0 :(得分:0)
我想如何解决它
import sys
from pygtail import Pygtail
for line in Pygtail("some.log"):
sys.stdout.write(line)
我希望它可以帮到你。
答案 1 :(得分:0)
您需要使用spread运算符来传播旧值,然后传播newObject [key]值数组。
这样的事情:
import { get } from 'lodash';
case "FOO_BAR":
const { key, newObject } = action.payload;
const newList = {
...state.list,
[key]: {
value: [...get(state, 'list[key].value', []), ...newObject[key].value]
fetching: newObject[key].fetching
}
};
return {
...state,
list: newList
}
修改:我添加了the get
utility function from lodash,这样如果state.list[key]
为undefined
,它将返回一个空数组以进行传播而不是抛出错误。