#![allow(clippy::await_holding_refcell_ref)] use std::rc::Rc; use dioxus::{html::geometry::euclid::Rect, prelude::*}; fn main() { dioxus_desktop::launch_cfg( app, dioxus_desktop::Config::default().with_custom_head( r#" "# .to_owned(), ), ); } fn app(cx: Scope) -> Element { let div_element: &UseRef>> = use_ref(cx, || None); let dimentions = use_ref(cx, Rect::zero); cx.render(rsx!( div { width: "50%", height: "50%", background_color: "red", onmounted: move |cx| { div_element.set(Some(cx.inner().clone())); }, "This element is {dimentions.read():?}" } button { onclick: move |_| { to_owned![div_element, dimentions]; async move { let read = div_element.read(); let client_rect = read.as_ref().map(|el| el.get_client_rect()); if let Some(client_rect) = client_rect { if let Ok(rect) = client_rect.await { dimentions.set(rect); } } } }, "Read dimentions" } )) }