浏览代码

fix hydration

Evan Almloff 1 年之前
父节点
当前提交
c137357094
共有 2 个文件被更改,包括 15 次插入13 次删除
  1. 1 1
      packages/core/src/scope_context.rs
  2. 14 12
      packages/web/src/rehydrate.rs

+ 1 - 1
packages/core/src/scope_context.rs

@@ -128,7 +128,7 @@ impl ScopeContext {
                     parent.name
                 );
                 if let Some(shared) = parent.shared_contexts.borrow().iter().find_map(|any| {
-                    tracing::trace!("found context {:?}", any.type_id());
+                    tracing::trace!("found context {:?}", (**any).type_id());
                     any.downcast_ref::<T>()
                 }) {
                     return Some(shared.clone());

+ 14 - 12
packages/web/src/rehydrate.rs

@@ -128,18 +128,20 @@ impl WebsysDom {
                 for attr in *attrs {
                     if let dioxus_core::TemplateAttribute::Dynamic { id } = attr {
                         let attribute = &vnode.dynamic_attrs[*id];
-                        let value = &attribute.value;
-                        let id = attribute.mounted_element();
-                        mounted_id = Some(id);
-                        let name = attribute.name;
-                        if let AttributeValue::Listener(_) = value {
-                            let event_name = &name[2..];
-                            self.interpreter.new_event_listener(
-                                event_name,
-                                id.0 as u32,
-                                event_bubbles(event_name) as u8,
-                            );
-                        }
+                        &attribute.attribute_type().for_each(|attribute| {
+                            let value = &attribute.value;
+                            let id = attribute.mounted_element();
+                            mounted_id = Some(id);
+                            let name = attribute.name;
+                            if let AttributeValue::Listener(_) = value {
+                                let event_name = &name[2..];
+                                self.interpreter.new_event_listener(
+                                    event_name,
+                                    id.0 as u32,
+                                    event_bubbles(event_name) as u8,
+                                );
+                            }
+                        });
                     }
                 }
                 if let Some(id) = mounted_id {