Redux使用传播存储形状

时间:2018-09-11 02:47:09

标签: javascript reactjs ecmascript-6 redux

当前,我的状态处于压倒一切。 我正在尝试这样做,因此它不会覆盖数据数组。 我需要访问数据的特定索引。数据数组内部的对象是根据组件步骤添加的。但是,当发生UPDATE时,我需要对数据数组的特定索引进行扩展,而无需对其进行突变。我怎样才能用我得到的东西做到这一点。我知道我要走了

const initialState = {
      index: 0,
      data: [{}],
    }; 



const reducer = (state = initialState, action) => {
  switch (action.type) {
  case UPDATE: {
      return {
        ...state,
        data: [{
            ...state.data[state.count],
            [action.name]: { value: action.value },
          }],
      };
    }
}

1 个答案:

答案 0 :(得分:1)

每次更新发生时,您都将覆盖state.data。您正在寻找的是这样的:

const initialState = {
    index: 0,
    data: [{}],
};

const reducer = (state = initialState, action) => {
    switch (action.type) {
        case UPDATE: {
            return {
                ...state,
                data: state.data.map((value, index) => {
                    if (index === state.count) {
                        return {
                            ...state.data[state.count],
                            [action.name]: { value: action.value },
                        }
                    }
                    return value;
                })
            };
        }
    }
}