Merge pull request #287 from DioxusLabs/jk/diff-keyed-fix
This commit is contained in:
2 files changed
+14
-3
No files matched your search
@@ -813,6 +813,15 @@ impl<'b> DiffState<'b> {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// remove any old children that are not shared
|
||||||
|
// todo: make this an iterator
|
||||||
|
for child in old {
|
||||||
|
let key = child.key().unwrap();
|
||||||
|
if !shared_keys.contains(&key) {
|
||||||
|
self.remove_nodes([child], true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// 4. Compute the LIS of this list
|
// 4. Compute the LIS of this list
|
||||||
let mut lis_sequence = Vec::default();
|
let mut lis_sequence = Vec::default();
|
||||||
lis_sequence.reserve(new_index_to_old_index.len());
|
lis_sequence.reserve(new_index_to_old_index.len());
|
||||||
|
|||||||
@@ -623,16 +623,17 @@ fn controlled_keyed_diffing_out_of_order() {
|
|||||||
assert_eq!(
|
assert_eq!(
|
||||||
changes.edits,
|
changes.edits,
|
||||||
[
|
[
|
||||||
|
Remove { root: 4 },
|
||||||
// move 4 to after 6
|
// move 4 to after 6
|
||||||
PushRoot { root: 1 },
|
PushRoot { root: 1 },
|
||||||
InsertAfter { n: 1, root: 3 },
|
InsertAfter { n: 1, root: 3 },
|
||||||
// remove 7
|
// remove 7
|
||||||
|
|
||||||
// create 9 and insert before 6
|
// create 9 and insert before 6
|
||||||
CreateElement { root: 5, tag: "div" },
|
CreateElement { root: 4, tag: "div" },
|
||||||
InsertBefore { n: 1, root: 3 },
|
InsertBefore { n: 1, root: 3 },
|
||||||
// create 0 and insert before 5
|
// create 0 and insert before 5
|
||||||
CreateElement { root: 6, tag: "div" },
|
CreateElement { root: 5, tag: "div" },
|
||||||
InsertBefore { n: 1, root: 2 },
|
InsertBefore { n: 1, root: 2 },
|
||||||
]
|
]
|
||||||
);
|
);
|
||||||
@@ -659,7 +660,8 @@ fn controlled_keyed_diffing_out_of_order_max_test() {
|
|||||||
assert_eq!(
|
assert_eq!(
|
||||||
changes.edits,
|
changes.edits,
|
||||||
[
|
[
|
||||||
CreateElement { root: 6, tag: "div" },
|
Remove { root: 5 },
|
||||||
|
CreateElement { root: 5, tag: "div" },
|
||||||
InsertBefore { n: 1, root: 3 },
|
InsertBefore { n: 1, root: 3 },
|
||||||
PushRoot { root: 4 },
|
PushRoot { root: 4 },
|
||||||
InsertBefore { n: 1, root: 1 },
|
InsertBefore { n: 1, root: 1 },
|
||||||
|
|||||||
Reference in new issue
Block a user