yew_hooks/lib.rs
1//! # Yew Hooks
2//!
3//! Hooks for [Yew](https://github.com/yewstack/yew), inspired by
4//! [streamich/react-use](https://github.com/streamich/react-use) and
5//! [alibaba/hooks](https://github.com/alibaba/hooks).
6//!
7//! ## Examples
8//!
9//! ```rust
10//! use yew::prelude::*;
11//!
12//! use yew_hooks::use_counter;
13//!
14//! #[function_component(Counter)]
15//! fn counter() -> Html {
16//! let counter = use_counter(0);
17//!
18//! let onincrease = {
19//! let counter = counter.clone();
20//! Callback::from(move |_| counter.increase())
21//! };
22//! let ondecrease = {
23//! let counter = counter.clone();
24//! Callback::from(move |_| counter.decrease())
25//! };
26//! let onincreaseby = {
27//! let counter = counter.clone();
28//! Callback::from(move |_| counter.increase_by(10))
29//! };
30//! let ondecreaseby = {
31//! let counter = counter.clone();
32//! Callback::from(move |_| counter.decrease_by(10))
33//! };
34//! let onset = {
35//! let counter = counter.clone();
36//! Callback::from(move |_| counter.set(100))
37//! };
38//! let onreset = {
39//! let counter = counter.clone();
40//! Callback::from(move |_| counter.reset())
41//! };
42//!
43//! html! {
44//! <div>
45//! <button onclick={onincrease}>{ "Increase" }</button>
46//! <button onclick={ondecrease}>{ "Decrease" }</button>
47//! <button onclick={onincreaseby}>{ "Increase by 10" }</button>
48//! <button onclick={ondecreaseby}>{ "Decrease by 10" }</button>
49//! <button onclick={onset}>{ "Set to 100" }</button>
50//! <button onclick={onreset}>{ "Reset" }</button>
51//! <p>
52//! <b>{ "Current value: " }</b>
53//! { *counter }
54//! </p>
55//! </div>
56//! }
57//! }
58//! ```
59//!
60//! ## Demo
61//!
62//! [Check out a live demo](https://jetli.github.io/yew-hooks/)
63
64mod hooks;
65pub(crate) mod web_sys_ext;
66
67pub use hooks::*;
68
69pub mod prelude {
70 pub use crate::hooks::*;
71}