pub fn use_queue<'hook, T>(
initial_value: VecDeque<T>,
) -> impl 'hook + Hook<Output = UseQueueHandle<T>>where
T: 'static + 'hook,Expand description
A hook that tracks a queue and provides methods to modify it.
§Example
use yew_hooks::prelude::*;
#[function_component(UseQueue)]
fn queue() -> Html {
let queue = use_queue(VecDeque::from(["Mercury", "Venus", "Earth", "Mars"]));
let onset = {
let queue = queue.clone();
Callback::from(move |_| queue.set(VecDeque::from(["Moon", "Earth"])))
};
let onpush_back = {
let queue = queue.clone();
Callback::from(move |_| {
queue.push_back("Jupiter");
})
};
let onpop_front = {
let queue = queue.clone();
Callback::from(move |_| {
let _ = queue.pop_front();
})
};
let onretain = {
let queue = queue.clone();
Callback::from(move |_| queue.retain(|v| v.contains('a')))
};
let onclear = {
let queue = queue.clone();
Callback::from(move |_| queue.clear())
};
html! {
<div>
<button onclick={onset}>{ "Set" }</button>
<button onclick={onpush_back}>{ "Push back" }</button>
<button onclick={onpop_front}>{ "Pop front" }</button>
<button onclick={onretain}>{ "Retain" }</button>
<button onclick={onclear}>{ "Clear all" }</button>
<p>
<b>{ "Current value: " }</b>
</p>
{
for queue.current().iter().map(|v| {
html! {
<p><b>{ *v }</b></p>
}
})
}
</div>
}
}§Note
When used in function components and hooks, this hook is equivalent to:
/// A hook that tracks a queue and provides methods to modify it.
///
/// # Example
///
/// ```rust
/// # use std::collections::VecDeque;
/// # use yew::prelude::*;
/// #
/// use yew_hooks::prelude::*;
///
/// #[function_component(UseQueue)]
/// fn queue() -> Html {
/// let queue = use_queue(VecDeque::from(["Mercury", "Venus", "Earth", "Mars"]));
///
/// let onset = {
/// let queue = queue.clone();
/// Callback::from(move |_| queue.set(VecDeque::from(["Moon", "Earth"])))
/// };
/// let onpush_back = {
/// let queue = queue.clone();
/// Callback::from(move |_| {
/// queue.push_back("Jupiter");
/// })
/// };
/// let onpop_front = {
/// let queue = queue.clone();
/// Callback::from(move |_| {
/// let _ = queue.pop_front();
/// })
/// };
/// let onretain = {
/// let queue = queue.clone();
/// Callback::from(move |_| queue.retain(|v| v.contains('a')))
/// };
/// let onclear = {
/// let queue = queue.clone();
/// Callback::from(move |_| queue.clear())
/// };
///
/// html! {
/// <div>
/// <button onclick={onset}>{ "Set" }</button>
/// <button onclick={onpush_back}>{ "Push back" }</button>
/// <button onclick={onpop_front}>{ "Pop front" }</button>
/// <button onclick={onretain}>{ "Retain" }</button>
/// <button onclick={onclear}>{ "Clear all" }</button>
/// <p>
/// <b>{ "Current value: " }</b>
/// </p>
/// {
/// for queue.current().iter().map(|v| {
/// html! {
/// <p><b>{ *v }</b></p>
/// }
/// })
/// }
/// </div>
/// }
/// }
/// ```
pub fn use_queue<T>(initial_value: VecDeque<T>) -> UseQueueHandle<T>
where
T: 'static,
{
/* implementation omitted */
}