【发布时间】:2021-08-17 18:36:40
【问题描述】:
我有一个实体对象,为简单起见,我们现在称它为Todo。我想要一个可以同时编辑多个待办事项的小部件,例如EditableTodoList(这将显示EditableTodos 的列表)。
这个小部件会收到List<Todo> 和Function onTodoEdited(Todo) 之类的东西。
我正在尝试使用不可变数据,因此当正在编辑EditableTodo 时(并且事件被传播到包含EditableTodoList 的小部件),我将创建一个新的List<Todo>,其中包含更新的Todo , 但随后 EditableTodoList 将重建其所有 EditableTodos 内部。
我该如何优化这一点,只重建相关的EditableTodo?我不想修改原始道具List<Todo>,因为这极大地隐藏了一个重要的细节。
背景:目前状态在一个肘内,我context.select-ing 为每个EditableTodo 列出状态对应的Todo 项目,这样只有编辑的项目重建。我想将这个EditableTodoList 与cubit 解耦。
理论上我认为这是不可能的,因为EditableTodoList 被赋予了新属性,所以它必须重建,这意味着所有子树都被重建。 EditableTodo 不能是 const,因为它的 prop 不是常量。
但是,将EditableTodoList 与腕尺分开的最优雅的方法是什么?因为它只需要一个List<Todo> 来显示,应该可以以某种方式优化未更改的Todos 的呈现
【问题讨论】: