当我尝试订阅商店中某个集合中特定商品的更改时,我想我误会了一些东西,或者做的是严重错误的事情。除非添加直接列表订阅,否则我的组件将不会收到更新。
以下作品:
const mapStateToProps = (state, props) => ({
list: state.podcasts.items,
getItem: props.id
? state.podcasts.items.filter(item => item.clientId === props.id)[0] || {}
: {},
});
如果我删除列表项,则只会收到我订阅的收藏项的初始状态。
我如何在化简器中更新列表:
PODCAST_GRADIENT_UPDATED: (state, { payload }) => ({
...state,
items: state.items.map(item => {
if (item.clientId === payload.clientId) {
item.gradient = payload.gradient; // eslint-disable-line
}
return item;
}),
}),
答案 0 :(得分:0)
这是一个菜鸟错误,因为上面的示例中存在一些状态突变。通过以下方式更改我在reducer中的功能可以解决此问题:
PODCAST_GRADIENT_UPDATED: (state, { payload }) => ({
...state,
items: state.items.map(item => {
if (item.clientId === payload.clientId) {
return { ...item, gradient: payload.gradient };
}
return { ...item };
}),
}),
特别注意使用散布运算符来创建和返回新项目。