У меня есть список объектов, которые можно выбрать, например.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) Если в текущем шаблоне имеется значительная производительность с сохранением элемента массива вместо ключа объекта?