Forráskód Böngészése

Fix memorization for the fragment component (#2360)

Evan Almloff 1 éve
szülő
commit
fc2b441ee1
2 módosított fájl, 10 hozzáadás és 4 törlés
  1. 2 1
      packages/core/src/error_boundary.rs
  2. 8 3
      packages/core/src/fragment.rs

+ 2 - 1
packages/core/src/error_boundary.rs

@@ -344,7 +344,8 @@ impl Properties for ErrorBoundaryProps {
     fn builder() -> Self::Builder {
         ErrorBoundaryProps::builder()
     }
-    fn memoize(&mut self, _: &Self) -> bool {
+    fn memoize(&mut self, other: &Self) -> bool {
+        *self = other.clone();
         false
     }
 }

+ 8 - 3
packages/core/src/fragment.rs

@@ -27,7 +27,7 @@ use crate::innerlude::*;
 /// You want to use this free-function when your fragment needs a key and simply returning multiple nodes from rsx! won't cut it.
 #[allow(non_upper_case_globals, non_snake_case)]
 pub fn Fragment(cx: FragmentProps) -> Element {
-    cx.0.clone()
+    cx.0
 }
 
 #[derive(Clone, PartialEq)]
@@ -90,7 +90,12 @@ impl Properties for FragmentProps {
     fn builder() -> Self::Builder {
         FragmentBuilder(None)
     }
-    fn memoize(&mut self, _other: &Self) -> bool {
-        false
+    fn memoize(&mut self, new: &Self) -> bool {
+        let equal = self == new;
+        if !equal {
+            let new_clone = new.clone();
+            self.0 = new_clone.0;
+        }
+        equal
     }
 }