FlatList:使用数组与对象存储数据

时间:2019-01-31 22:56:18

标签: reactjs react-native react-redux

我有一个可选择对象的列表,例如。 让任务= [任务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)如果使用当前模式,则存储数组元素而不是对象键是否具有显着的性能优势?

0 个答案:

没有答案