Fix memorization for the fragment component (#2360)

This commit is contained in:
Evan Almloff 2024-04-25 23:48:06 -05:00 committed by GitHub
parent 47c87568e1
commit fc2b441ee1
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 10 additions and 4 deletions

View file

@ -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
}
}

View file

@ -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
}
}