FlatList: использование массива и объекта для хранения данных - PullRequest
0 голосов
/ 01 февраля 2019

У меня есть список объектов, которые можно выбрать, например.let Tasks = [Задача A, Задача B, Задача C, Задача D].Я использую FlatList для рендеринга задач.При нажатии на задачу пользователь попадает в «Редактировать задачу» для выбранной задачи.Я могу использовать redux для обновления выбранного элемента в индексе массива или, в качестве альтернативы, я могу сохранить выбранный ключ задачи.

case SELECT_TASK:
    return {
        ...state,
        selected_habit: action.array_index
    };

case SELECT_TASK:
    return {
        ...state,
        selected_habit: action.key
    };

На определенной странице задачи пользователь может редактировать задачу.Затем в режиме редукции я мог выполнить одно из следующих действий:

case EDIT_TASK: {
    let tasks = { ...state.tasks};
    tasks[state.selected_task] = edited_task; //not showing edit code
    return {
        ...state 
        tasks: tasks
    }
}
//don't use array index, instead use task key
case EDIT_TASK:
 return {
    ...state 
    tasks: state.tasks.map(task => {
        if (task.key === action.key) {
            //update task code
            return task;
        } else return task;
    })
}

В каждой задаче у меня может быть массив подзадач, требующих плоский список или аналогичный.Доступ к этим вложенным массивам с помощью Redux кажется беспорядочным.Казалось бы, предпочтительнее держать объект и обращаться к определенным клавишам.Однако FlatList требует массив.

1) Должен ли я рассмотреть вопрос о сохранении задач в redux как объекта и создании массива из объекта перед рендерингом, чтобы я мог использовать FlatList?Это позволило бы упростить обновление определенных атрибутов задач (без сохранения выбранных состояний или сопоставления для каждого обновления)?

2) Если в текущем шаблоне имеется значительная производительность с сохранением элемента массива вместо ключа объекта?

...