瀏覽代碼

Merge pull request #331 from Demonthos/diff-fix

fix: diff_lazynodes bug adding children
Jon Kelley 3 年之前
父節點
當前提交
09d193d999
共有 2 個文件被更改,包括 26 次插入0 次删除
  1. 1 0
      packages/core/src/diff.rs
  2. 25 0
      tests/diffing.rs

+ 1 - 0
packages/core/src/diff.rs

@@ -423,6 +423,7 @@ impl<'b> DiffState<'b> {
         match (old.children.len(), new.children.len()) {
             (0, 0) => {}
             (0, _) => {
+                self.mutations.push_root(root);
                 let created = self.create_children(new.children);
                 self.mutations.append_children(created as u32);
             }

+ 25 - 0
tests/diffing.rs

@@ -730,3 +730,28 @@ fn remove_list_nokeyed() {
         ]
     );
 }
+
+#[test]
+fn add_nested_elements() {
+    let vdom = new_dom();
+
+    let (_create, change) = vdom.diff_lazynodes(
+        rsx! {
+            div{}
+        },
+        rsx! {
+            div{
+                div{}
+            }
+        },
+    );
+
+    assert_eq!(
+        change.edits,
+        [
+            PushRoot { root: 1 },
+            CreateElement { root: 2, tag: "div" },
+            AppendChildren { many: 1 },
+        ]
+    );
+}