pub fn use_set<'hook, T>(
initial_value: HashSet<T>,
) -> impl 'hook + Hook<Output = UseSetHandle<T>>where
T: 'static + 'hook,
Expand description
A hook that tracks a hash set and provides methods to modify it.
§Example
use yew_hooks::prelude::*;
#[function_component(UseSet)]
fn set() -> Html {
let set = use_set(HashSet::from(["Mercury", "Venus", "Earth", "Mars"]));
let onset = {
let set = set.clone();
Callback::from(move |_| set.set(HashSet::from(["Moon", "Earth"])))
};
let oninsert = {
let set = set.clone();
Callback::from(move |_| {
let _ = set.insert("Jupiter");
})
};
let onreplace = {
let set = set.clone();
Callback::from(move |_| {
let _ = set.replace("Earth");
})
};
let onremove = {
let set = set.clone();
Callback::from(move |_| {
let _ = set.remove(&"Moon");
})
};
let onretain = {
let set = set.clone();
Callback::from(move |_| set.retain(|v| v.contains('a')))
};
let onclear = {
let set = set.clone();
Callback::from(move |_| set.clear())
};
html! {
<div>
<button onclick={onset}>{ "Set" }</button>
<button onclick={oninsert}>{ "Insert" }</button>
<button onclick={onreplace}>{ "Replace" }</button>
<button onclick={onremove}>{ "Remove" }</button>
<button onclick={onretain}>{ "Retain" }</button>
<button onclick={onclear}>{ "Clear all" }</button>
<p>
<b>{ "Current value: " }</b>
</p>
{
for set.current().iter().map(|v| {
html! {
<p><b>{ v }</b></p>
}
})
}
</div>
}
}
§Note
When used in function components and hooks, this hook is equivalent to:
pub fn use_set<T>(initial_value: HashSet<T>) -> UseSetHandle<T>
where
T: 'static,
{
/* implementation omitted */
}