pub fn use_map<'hook, K, V>(
initial_value: HashMap<K, V>,
) -> impl 'hook + Hook<Output = UseMapHandle<K, V>>where
K: 'static + 'hook,
V: 'static + 'hook,
Expand description
A hook that tracks a hash map and provides methods to modify it.
§Example
use yew_hooks::prelude::*;
#[function_component(UseMap)]
fn map() -> Html {
let map = use_map(HashMap::from([
("Mercury", 0.4),
("Venus", 0.7),
("Earth", 1.0),
("Mars", 1.5),
]));
let onset = {
let map = map.clone();
Callback::from(move |_| map.set(HashMap::from([("Moon", 0.8), ("Earth", 1.0)])))
};
let oninsert = {
let map = map.clone();
Callback::from(move |_| {
let _ = map.insert("Jupiter", 2.1);
})
};
let onupdate = {
let map = map.clone();
Callback::from(move |_| map.update(&"Earth", 1.1))
};
let onremove = {
let map = map.clone();
Callback::from(move |_| {
let _ = map.remove(&"Moon");
})
};
let onretain = {
let map = map.clone();
Callback::from(move |_| map.retain(|_k, v| v > &mut 1.0))
};
let onclear = {
let map = map.clone();
Callback::from(move |_| map.clear())
};
html! {
<div>
<button onclick={onset}>{ "Set" }</button>
<button onclick={oninsert}>{ "Insert" }</button>
<button onclick={onupdate}>{ "Update" }</button>
<button onclick={onremove}>{ "Remove" }</button>
<button onclick={onretain}>{ "Retain" }</button>
<button onclick={onclear}>{ "Clear all" }</button>
<p>
<b>{ "Current value: " }</b>
</p>
{
for map.current().iter().map(|(k, v)| {
html! {
<p><b>{ k }</b> {": "} { v }</p>
}
})
}
</div>
}
}
§Note
When used in function components and hooks, this hook is equivalent to:
pub fn use_map<K, V>(initial_value: HashMap<K, V>) -> UseMapHandle<K, V>
where
K: 'static,
V: 'static,
{
/* implementation omitted */
}