Javascript 更新reducer中对象的状态

Javascript 更新reducer中对象的状态,javascript,reactjs,redux,react-redux,Javascript,Reactjs,Redux,React Redux,我是新手。在这里,我有一个功能,可以添加或删除三个不同的行。我有一个减速器,就像 const initialState = { Low: [ { id: 'L0', technologyId: 0, technology: '', type: '', count: '', level: 'EASY' } ]

我是新手。在这里,我有一个功能,可以添加或删除三个不同的行。我有一个减速器,就像

const initialState = {
    Low: [
        {
            id: 'L0',
            technologyId: 0,
            technology: '',
            type: '',
            count: '',
            level: 'EASY'
        }
    ],
    Medium: [
        {
            id: 'M0',
            technologyId: 0,
            technology: '',
            type: '',
            count: '',
            level: 'Medium'
        }
    ],
    High: [
        {
            id: 'H0',
            technologyId: 0,
            technology: '',
            type: '',
            count: '',
            level: 'Tough'
        }
    ],
所以,在这里,我想把它作为一个泛型,所以,我试图在点击加号时添加对象,在-,上删除。所以

在这里,我使用

const tempObj = {
      id: tempvar + id,
      technologyId: 0,
      technology: temp[0].technology,
      type: type,
      count: '',
      level: addtype
    }
我现在创建这个对象取决于我在那个特定数组中添加的addType

我是这样做的

const addData = [...this.props.lowData[addtype], tempObj];

    this.props.addNewTech(addData);
所以,这里这个
…this.props.lowData[addtype]
返回的是一个对象而不是数组,这就是问题所在吗?如果是,它应该返回一个数组而不是对象,但这是如何返回对象而不是数组的。 我的道具,低数据就像


一个具有三个不同数组的对象,我的意思与reducer相同,但每次我添加它时,它只在
Low
数组中添加该元素,而不是在medium或high数组中添加该元素。有人能帮我解决这个问题吗?

问题出在减速机中,您只更新了
Low
属性。您需要检查哪些属性需要更新。为此,您可以像这样将
addtype
传递给动作创建者

this.props.addNewTech({ addData, addtype });
然后是行动中的创造者

export function addNewTech(data) { 
  return {
     type: ADD_NEW, 
     data //is equavalent to data: data (ES6)
  } 
} 
然后在reducer中动态更新对象

    case ADD_NEW: 
      return { 
        ...state, 
        //here choose the property to be updated dynamically
        //replace Low: action.data with below line
        [action.data.addtype]: action.data.addData, 
        error: false, 
      } 

**注意这里
[action.data.addtype]:action.data.addData
我们在ES6中使用计算属性名。

这个.props.lowData看起来像什么。你能发布它的屏幕截图吗?当然我能发布。@Shivam添加了低数据请检查你到底想要实现什么?同时显示相应的动作和减速器代码。实际上,点击add按钮我只想在相应的数组中添加一个元素,比如,如果我在Low中添加一个元素,那么它应该被添加到Low数组中,其他的也一样。但是现在,它每次都被添加到Low中。回答很好。非常感谢您抽出时间:-)