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}