mirror of
https://github.com/DioxusLabs/dioxus
synced 2024-11-22 12:13:04 +00:00
Fix spread props diffing (#2679)
* Fix spread props diffing * Add a regression test for extends prop diffing
This commit is contained in:
parent
6148941825
commit
ea3d88c1dd
2 changed files with 30 additions and 0 deletions
|
@ -640,6 +640,7 @@ mod struct_info {
|
||||||
|
|
||||||
let regular_fields: Vec<_> = self
|
let regular_fields: Vec<_> = self
|
||||||
.included_fields()
|
.included_fields()
|
||||||
|
.chain(self.extend_fields())
|
||||||
.filter(|f| !looks_like_signal_type(f.ty) && !looks_like_callback_type(f.ty))
|
.filter(|f| !looks_like_signal_type(f.ty) && !looks_like_callback_type(f.ty))
|
||||||
.map(|f| {
|
.map(|f| {
|
||||||
let name = f.name;
|
let name = f.name;
|
||||||
|
|
|
@ -134,3 +134,32 @@ fn TakesSignal(sig: ReadOnlySignal<usize>, number: usize) -> Element {
|
||||||
button { "{number}" }
|
button { "{number}" }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Regression test for https://github.com/DioxusLabs/dioxus/issues/2582
|
||||||
|
#[test]
|
||||||
|
fn spreads_memorize_in_place() {
|
||||||
|
#[derive(Props, Clone, PartialEq)]
|
||||||
|
struct CompProps {
|
||||||
|
#[props(extends = GlobalAttributes)]
|
||||||
|
attributes: Vec<Attribute>,
|
||||||
|
}
|
||||||
|
|
||||||
|
let mut props = CompProps::builder().build();
|
||||||
|
assert!(!props.memoize(&CompProps::builder().all("123").build()));
|
||||||
|
assert_eq!(
|
||||||
|
props.attributes,
|
||||||
|
vec![Attribute::new("all", "123", Some("style"), false)]
|
||||||
|
);
|
||||||
|
|
||||||
|
assert!(!props.memoize(&CompProps::builder().width("123").build()));
|
||||||
|
assert_eq!(
|
||||||
|
props.attributes,
|
||||||
|
vec![Attribute::new("width", "123", Some("style"), false)]
|
||||||
|
);
|
||||||
|
|
||||||
|
assert!(!props.memoize(&CompProps::builder().build()));
|
||||||
|
assert_eq!(props.attributes, vec![]);
|
||||||
|
|
||||||
|
assert!(props.memoize(&CompProps::builder().build()));
|
||||||
|
assert_eq!(props.attributes, vec![]);
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in a new issue