首页 > 解决方案 > React:上下文挂钩,将对象推入数组

问题描述

我得到的错误是Cannot find name 'objectArray'.

interface StateInterface {
  objects: {
    objectArray: object[];
    selected: object;
  };
}

const InitialState: StateInterface = {
  objects: {
    objectArray: [],
    selected: {},
  },
};


const Reducer = (state: StateInterface, action: any) => {
  switch (action.type) {
    case 'SELECTED':
      return {
        ...state,
        objects: { ...state.objects, selected: action.value },
      };
    case 'ADD_OBJECT':
      return {
        ...state,
        objects: { ...state.objects, objectArray: objectArray.push(action.value )},
//                                                     ^---- Cannot find name 'objectArray'.ts(2304)
      };
    default:
      return state;
  }
};

我也试过

objects: { ...state.objects, objectArray:  ...action.value )},

标签: reactjstypescript

解决方案


此时只有状态对象在范围内(作为减速器的参数提供),尝试在您收到错误时切换objectArraystate.objectArray

而且,您需要不可变地附加该值以使其正确(reducers 规则),因此您需要使整行类似于:

objects: { ...state.objects, objectArray: [...state.objectArray, action.value]},

使用旧值和要添加的新值创建一个新数组。


推荐阅读