更新特征数组的特定对象

时间:2017-07-21 02:21:15

标签: javascript reactjs redux immutable.js

我正在努力从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;
          })
        };
      })
    );
}

我需要以下对象

enter image description here

更新了一个,但我得到的是这样的

enter image description here

1 个答案:

答案 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,因为专家将拥有您正在更新的功能数组。