首页 > 解决方案 > FlatList:使用数组与对象来存储数据

问题描述

我有一个可选择的对象列表,例如。让任务 = [任务 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
    };

在任务特定页面上,用户可以编辑任务。然后在 redux 中,我可以执行以下任一操作:

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)如果是当前模式,存储数组元素而不是对象键是否有显着的性能提升?

标签: reactjsreact-nativereact-redux

解决方案


推荐阅读