pub fn use_set<T>(initial_value: HashSet<T>) -> UseSetHandle<T> where
    T: 'static, 
Expand description

A hook that tracks a hash set and provides methods to modify it.

Example

use yew_hooks::use_set;

#[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>
    }
}