Skip to content

Commit 07cf649

Browse files
authored
Merge pull request #3994 from leptos-rs/3983
fix: don't use `Arc::ptr_eq` for string comparison (closes #3983)
2 parents c4354ac + 0e9598b commit 07cf649

File tree

4 files changed

+6
-4
lines changed

4 files changed

+6
-4
lines changed

tachys/src/html/class.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -473,7 +473,7 @@ impl IntoClass for Arc<str> {
473473

474474
fn rebuild(self, state: &mut Self::State) {
475475
let (el, prev) = state;
476-
if !Arc::ptr_eq(&self, prev) {
476+
if self != *prev {
477477
Rndr::set_attribute(el, "class", &self);
478478
}
479479
*prev = self;

tachys/src/html/element/inner_html.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -292,7 +292,7 @@ impl InnerHtmlValue for Arc<str> {
292292
}
293293

294294
fn rebuild(self, state: &mut Self::State) {
295-
if !Arc::ptr_eq(&self, &state.1) {
295+
if self != state.1 {
296296
Rndr::set_inner_html(&state.0, &self);
297297
state.1 = self;
298298
}

tachys/src/reactive_graph/class.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -211,18 +211,20 @@ where
211211
let (name, mut f) = self;
212212
// Name might've updated:
213213
state.name = name;
214+
let mut first_run = true;
214215
state.effect = RenderEffect::new_with_value(
215216
move |prev| {
216217
let include = *f.invoke().borrow();
217218
match prev {
218219
Some((class_list, prev)) => {
219220
if include {
220-
if !prev {
221+
if !prev || first_run {
221222
Rndr::add_class(&class_list, name);
222223
}
223224
} else if prev {
224225
Rndr::remove_class(&class_list, name);
225226
}
227+
first_run = false;
226228
(class_list.clone(), include)
227229
}
228230
None => {

tachys/src/view/strings.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -372,7 +372,7 @@ impl Render for Arc<str> {
372372

373373
fn rebuild(self, state: &mut Self::State) {
374374
let ArcStrState { node, str } = state;
375-
if !Arc::ptr_eq(&self, str) {
375+
if self != *str {
376376
Rndr::set_text(node, &self);
377377
*str = self;
378378
}

0 commit comments

Comments
 (0)