12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- use dioxus::prelude::*;
- fn main() {
- dioxus::launch(app);
- }
- fn app() -> Element {
- let mut signal = use_signal(|| 0);
- use_future(move || async move {
- loop {
- tokio::time::sleep(std::time::Duration::from_secs(1)).await;
- signal += 1;
- }
- });
- rsx! {
- "Parent count: {signal}"
- Child {
- non_reactive_prop: signal()
- }
- }
- }
- #[component]
- fn Child(non_reactive_prop: i32) -> Element {
- let mut signal = use_signal(|| 0);
- // You can manually specify the dependencies with `use_reactive` for values that are not reactive like props
- let computed = use_memo(use_reactive!(
- |(non_reactive_prop,)| non_reactive_prop + signal()
- ));
- use_effect(use_reactive!(|(non_reactive_prop,)| println!(
- "{}",
- non_reactive_prop + signal()
- )));
- let fut = use_resource(use_reactive!(|(non_reactive_prop,)| async move {
- tokio::time::sleep(std::time::Duration::from_secs(1)).await;
- non_reactive_prop + signal()
- }));
- rsx! {
- button {
- onclick: move |_| signal += 1,
- "Child count: {signal}"
- }
- "Sum: {computed}"
- "{fut():?}"
- }
- }
|