如何在redux中更新数组的嵌套对象状态?

时间:2018-01-25 13:13:49

标签: arrays reactjs redux react-redux

我想用动作有效负载中的特定索引更新数组数组中对象的状态。我在减速器中有这种状态。

const INITIAL_STATE = {
    tasks: {
        taskArray: [
            {
                maintask: 'Main task 1',
                subtask: [
                    {
                        photo_urls: [],
                        task_name: 'Task 1',
                        task_status: false
                    }, 
                    {
                        photo_urls: [],
                        task_name: 'Task 2',
                        task_status: false
                    }
                ]
            },
            {
                maintask: 'Main task 2',
                subtask: [
                    {
                        photo_urls: [],
                        task_name: 'Task 1',
                        task_status: false
                    }, 
                    {
                        photo_urls: [],
                        task_name: 'Task 2',
                        task_status: false
                    }
                ]
            }
        ]
    }
};

export default (state = INITIAL_STATE, action) => {
    switch (action.type) {
        case ON_CHECK_BOX_CLICK:
            return state;

        default:
            return state;
    }
};

我在action.payload中有一个子任务对象。首先,我想检查数组中对象的索引,然后我想更新object的particuler数组的状态。

1 个答案:

答案 0 :(得分:1)

我建议您使用https://github.com/kolodny/immutability-helper作为有效负载,您可以发送update函数的结果:

import update from 'immutability-helper';

update(currentState, {
  tasks: {
    tasksArray: {
      0: {
        subtask: {
          1: {
            task_name: { $set: 'New value for Task 2' }
          }
        }
      }
    }
  }
});