Ver código fonte

fix web onmount event

Evan Almloff 1 ano atrás
pai
commit
3a02520ffa
2 arquivos alterados com 10 adições e 7 exclusões
  1. 1 2
      packages/web/src/dom.rs
  2. 9 5
      packages/web/src/event.rs

+ 1 - 2
packages/web/src/dom.rs

@@ -253,8 +253,7 @@ impl WebsysDom {
             let node = dioxus_interpreter_js::get_node(id.0 as u32);
             if let Some(element) = node.dyn_ref::<Element>() {
                 log::info!("mounted event fired: {}", id.0);
-                let data: dioxus_html::MountedData = element.into();
-                let data = PlatformEventData::new(Box::new(data));
+                let data = PlatformEventData::new(Box::new(element.clone()));
                 let _ = self.event_channel.unbounded_send(UiEvent {
                     name: "mounted".to_string(),
                     bubbles: false,

+ 9 - 5
packages/web/src/event.rs

@@ -83,7 +83,11 @@ impl HtmlEventConverter for WebEventConverter {
     fn convert_mounted_data(&self, event: &dioxus_html::PlatformEventData) -> MountedData {
         #[cfg(feature = "mounted")]
         {
-            MountedData::from(downcast_event(event).element.clone())
+            MountedData::from(
+                event
+                    .downcast::<web_sys::Element>()
+                    .expect("event should be a web_sys::Element"),
+            )
         }
         #[cfg(not(feature = "mounted"))]
         {
@@ -216,10 +220,10 @@ impl WebEventExt<web_sys::Event> for dioxus_html::MediaData {
     }
 }
 
-impl WebEventExt<MountedData> for MountedData {
-    fn web_event(&self) -> &MountedData {
-        self.downcast::<MountedData>()
-            .expect("event should be a WebMountedEvent")
+impl WebEventExt<web_sys::Element> for MountedData {
+    fn web_event(&self) -> &web_sys::Element {
+        self.downcast::<web_sys::Element>()
+            .expect("event should be a web_sys::Element")
     }
 }