---
title: 'State'
---

## General view of how to store state

This table can be used as a guide when deciding what state-storing type fits best for your use case:

| Hook                     | Type                       | Rerender when?               | Scope               |
| ------------------------ | -------------------------- | ---------------------------- | ------------------- |
| [use_state]              | `T`                        | got set                      | component instance  |
| [use_state_eq]           | `T: PartialEq`             | got set with diff. value     | component instance  |
| [use_reducer]            | `T: Reducible`             | got reduced                  | component instance  |
| [use_reducer_eq]         | `T: Reducible + PartialEq` | got reduced with diff. value | component instance  |
| [use_memo]               | `Deps -> T`                | dependencies changed         | component instance  |
| [use_callback]           | `Deps -> Callback<E>`      | dependencies changed         | component instance  |
| [use_mut_ref]            | `T`                        | -                            | component instance  |
| a static global variable | `T`                        | -                            | global, used by all |

[use_state]: https://yew-rs-api.web.app/next/yew/functional/fn.use_state.html
[use_state_eq]: https://yew-rs-api.web.app/next/yew/functional/fn.use_state_eq.html
[use_reducer]: https://yew-rs-api.web.app/next/yew/functional/fn.use_reducer.html
[use_reducer_eq]: https://yew-rs-api.web.app/next/yew/functional/fn.use_reducer_eq.html
[use_memo]: https://yew-rs-api.web.app/next/yew/functional/fn.use_memo.html
[use_callback]: https://yew-rs-api.web.app/next/yew/functional/fn.use_callback.html
[use_mut_ref]: https://yew-rs-api.web.app/next/yew/functional/fn.use_mut_ref.html
