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}