首页 > 解决方案 > Redux 使用扩展存储形状

问题描述

目前我的状态正在超越自己。我正在尝试这样做,因此它不会覆盖数据数组。我需要访问数据的特定索引。数据数组内部的对象是根据组件步骤添加的。但是当更新发生时,我需要在数据数组的特定索引上进行传播而不改变它。我怎么能用我得到的东西做到这一点。我知道我很接近了。

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 },
          }],
      };
    }
}

标签: javascriptreactjsecmascript-6redux

解决方案


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;
                })
            };
        }
    }
}

推荐阅读