dioxus/packages/hooks
Jonathan Kelley 8814977eee wip: docs
2021-11-30 22:48:05 -05:00
..
src wip: docs 2021-11-30 22:48:05 -05:00
Cargo.toml fix: really big bug around hooks 2021-11-29 11:10:40 -05:00
README.md fix: really big bug around hooks 2021-11-29 11:10:40 -05:00

Common hooks for Dioxus

This crate includes some basic useful hooks for dioxus:

  • use_state
  • use_ref
  • use_collection
  • use_task
  • use_signal

use_state

The king daddy of state hooks.

You can always use it "normally" with the split method:

// Normal usage:
let value = use_state(cx, || 10);

// "Classic" usage:
let (value, set_value) = use_state(cx, || 0).split();

use_ref

use_rwlock

A multithreaded form of RwLock for use in tasks

let val = use_rwlock(cx, || 10);
use_task((), || async loop {
    *val.write().unwrap() += 1;
    async_std::task::delay(Duration::from_ms(1000)).await;
});
use_task((), || async loop {
    *val.write().unwrap() -= 1;
    async_std::task::delay(Duration::from_ms(500)).await;
});

use_hashmap

Store a memoized collection with similar semantics to use_state. Comes with a bunch of utility methods to make working with collections easier. Is essentially a wrapper over the immutable hashmap in im-rc.

let todos = use_hashmap(cx, |map| map.insert("bob", "bill"));
cx.render(rsx!(
    button { onclick: move |_| todos.insert("bob", "bill")
        "add random todo"
    }
)

use_task

use_task submits a task to the dioxus task queue to be progressed during Dioxus's async event loop. The task must not return anything

use_signal