feat: add some helpers to use_ref
This commit is contained in:
1 parent
93b4f745af
commit
45473ece8c
2 files changed
+32
No files matched your search
@@ -0,0 +1,21 @@
|
|||||||
|
use std::collections::HashMap;
|
||||||
|
|
||||||
|
use dioxus::prelude::*;
|
||||||
|
fn main() {}
|
||||||
|
|
||||||
|
fn app(cx: Scope) -> Element {
|
||||||
|
let val = use_ref(&cx, || HashMap::<u32, String>::new());
|
||||||
|
|
||||||
|
// Pull the value out locally
|
||||||
|
let p = val.read();
|
||||||
|
|
||||||
|
// to get an &HashMap we have to "reborrow" through the RefCell
|
||||||
|
// Be careful: passing this into children might cause a double borrow of the RefCell and a panic
|
||||||
|
let g = &*p;
|
||||||
|
|
||||||
|
cx.render(rsx! {
|
||||||
|
div {
|
||||||
|
"hi"
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
@@ -42,6 +42,17 @@ impl<T> UseRef<T> {
|
|||||||
self.value.borrow_mut()
|
self.value.borrow_mut()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Take a reference to the inner value termporarily and produce a new value
|
||||||
|
pub fn with<O>(&self, f: impl FnOnce(&T) -> O) -> O {
|
||||||
|
f(&*self.read())
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Take a reference to the inner value termporarily and produce a new value,
|
||||||
|
/// modifying the original in place.
|
||||||
|
pub fn with_mut<O>(&self, f: impl FnOnce(&mut T) -> O) -> O {
|
||||||
|
f(&mut *self.write())
|
||||||
|
}
|
||||||
|
|
||||||
pub fn needs_update(&self) {
|
pub fn needs_update(&self) {
|
||||||
(self.update_callback)();
|
(self.update_callback)();
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in new issue
Block a user