reactjs - 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)如果是当前模式,存储数组元素而不是对象键是否有显着的性能提升?
解决方案
推荐阅读
- conventions - 静态类的首字母应该大写吗?
- javascript - node.js 中的 Ajax 调用
- database - 基于新表创建创建和命名 sql 表的 Sqlalchemy 最佳实践
- git - 推送到我的分支时收到致命错误
- c++ - 不理解 C++ 中存在流错误的程序流程
- php - 如何在 Laravel 上解决数据 Excel 到 MySQL 的更改值
- javascript - 从表或列表中抓取数据?
- c++ - 如何在 C++ 中的 Caesar Cipher 程序中包含空格?
- javascript - 如何简化 JS 变量并获取 ``s 按类,然后将它们的值相加?
- cocoa - 如何检查应用程序是否已注册以处理 macOS 上的特定 URL 方案?