scroll_to_top.rs 867 B

1234567891011121314151617181920212223242526272829303132333435
  1. use dioxus::prelude::*;
  2. fn main() {
  3. dioxus_desktop::launch(app);
  4. }
  5. fn app(cx: Scope) -> Element {
  6. let header_element = use_ref(cx, || None);
  7. cx.render(rsx!(
  8. div {
  9. h1 {
  10. onmounted: move |cx| {
  11. header_element.set(Some(cx.inner().clone()));
  12. },
  13. "Scroll to top example"
  14. }
  15. for i in 0..100 {
  16. div { "Item {i}" }
  17. }
  18. button {
  19. onclick: move |_| {
  20. if let Some(header) = header_element.read().as_ref().cloned() {
  21. cx.spawn(async move {
  22. let _ = header.scroll_to(ScrollBehavior::Smooth).await;
  23. });
  24. }
  25. },
  26. "Scroll to top"
  27. }
  28. }
  29. ))
  30. }