我正在努力从features数组更新特定对象并使用更新的对象返回整个对象。我可以更新特定对象,但无法使用更新的对象返回相同的整个对象。我使用immutablejs这样做。这是我的代码
case EDIT_FEATURE_SUCCESS: {
return state
.set('requesting', false)
.set('response', action.response.data.message)
.update('features', features =>
state.get('features').map(feat => {
return {
...feat,
features: features.map(feature => {
if (feature._id === action.response.data.featureObj._id) {
return action.response.data.featureObj;
} else return feature;
})
};
})
);
}
我需要以下对象
更新了一个,但我得到的是这样的
答案 0 :(得分:2)
当关于更新嵌套对象时,immutablejs似乎很复杂。你可以尝试这个。让我知道它是否有效。在我看来,它应该工作
case EDIT_FEATURE_SUCCESS: {
return state
.set('requesting', false)
.set('response', action.response.data.message)
.update('features', features =>
features.map(feat => {
return {
...feat,
features: feat.features.map(feature => {
if (feature._id === action.response.data.featureObj._id) {
return action.response.data.featureObj;
} else return feature;
})
};
})
);
}
在代码中,我将state.get('features')
更改为features
,这只是缩短了代码行。问题是你正在进行features.map
,而应该是feat.features
,因为专家将拥有您正在更新的功能数组。