freya_core/lifecycle/reactive.rs
1use crate::prelude::{
2 State,
3 use_state,
4};
5
6/// Allows converting a `&T` into a `State<T>` so that we can pass this value around without cloning it multiple times.
7pub fn use_reactive<T: 'static + Clone + PartialEq>(value: &T) -> State<T> {
8 let mut state = use_state(|| value.clone());
9
10 if &*state.peek() != value {
11 state.set(value.clone());
12 }
13 state
14}