Type Alias freya::hooks::EditorState

source ·
pub type EditorState = UseState<RopeEditor>;

Aliased Type§

struct EditorState { /* private fields */ }

Implementations§

§

impl<T> UseState<T>where T: 'static,

pub fn set(&self, new: T)

Set the state to a new value.

pub fn current(&self) -> Rc<T, Global>

Get the current value of the state by cloning its container Rc.

This is useful when you are dealing with state in async contexts but need to know the current value. You are not given a reference to the state.

Examples

An async context might need to know the current value:

fn component(cx: Scope) -> Element {
    let count = use_state(cx, || 0);
    cx.spawn({
        let set_count = count.to_owned();
        async move {
            let current = set_count.current();
        }
    })
}

pub fn setter(&self) -> Rc<dyn Fn(T), Global>

Get the setter function directly without the UseState wrapper.

This is useful for passing the setter function to other components.

However, for most cases, calling to_owned on the state is the preferred way to get “another” state handle.

Examples

A component might require an Rc<dyn Fn(T)> as an input to set a value.

fn component(cx: Scope) -> Element {
    let value = use_state(cx, || 0);

    rsx!{
        Component {
            handler: value.setter()
        }
    }
}

pub fn modify(&self, f: impl FnOnce(&T) -> T)

Set the state to a new value, using the current state value as a reference.

This is similar to passing a closure to React’s set_value function.

Examples

Basic usage:

fn component(cx: Scope) -> Element {
    let value = use_state(cx, || 0);

    // to increment the value
    value.modify(|v| v + 1);

    // usage in async
    cx.spawn({
        let value = value.to_owned();
        async move {
            value.modify(|v| v + 1);
        }
    });

}

pub fn get(&self) -> &T

Get the value of the state when this handle was created.

This method is useful when you want an Rc around the data to cheaply pass it around your app.

Warning

This will return a stale value if used within async contexts.

Try current to get the real current value of the state.

Example
fn component(cx: Scope) -> Element {
    let value = use_state(cx, || 0);

    let as_rc = value.get();
    assert_eq!(as_rc.as_ref(), &0);

}

pub fn get_rc(&self) -> &Rc<T, Global>

pub fn needs_update(&self)

Mark the component that create this UseState as dirty, forcing it to re-render.

fn component(cx: Scope) -> Element {
    let count = use_state(cx, || 0);
    cx.spawn({
        let count = count.to_owned();
        async move {
            // for the component to re-render
            count.needs_update();
        }
    })
}
§

impl<T> UseState<T>where T: Clone,

pub fn with_mut(&self, apply: impl FnOnce(&mut T))

Get a mutable handle to the value by calling ToOwned::to_owned on the current value.

This is essentially cloning the underlying value and then setting it, giving you a mutable handle in the process. This method is intended for types that are cheaply cloneable.

If you are comfortable dealing with RefMut, then you can use make_mut to get the underlying slot. However, be careful with RefMut since you might panic if the RefCell is left open.

Examples
let val = use_state(cx, || 0);

val.with_mut(|v| *v = 1);

pub fn make_mut(&self) -> RefMut<'_, T>

Get a mutable handle to the value by calling ToOwned::to_owned on the current value.

This is essentially cloning the underlying value and then setting it, giving you a mutable handle in the process. This method is intended for types that are cheaply cloneable.

Warning

Be careful with RefMut since you might panic if the RefCell is left open!

Examples
let val = use_state(cx, || 0);

*val.make_mut() += 1;

pub fn split(&self) -> (&T, &UseState<T>)

Convert this handle to a tuple of the value and the handle itself.

Trait Implementations§

§

impl<T> AddAssign<T> for UseState<T>where T: Add<T, Output = T> + Copy,

§

fn add_assign(&mut self, rhs: T)

Performs the += operation. Read more
§

impl<T> Binary for UseState<T>where T: Binary,

§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter.
§

impl<T> Clone for UseState<T>where T: 'static,

§

fn clone(&self) -> UseState<T>

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
§

impl<T> Debug for UseState<T>where T: Debug,

§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
§

impl<T> Deref for UseState<T>

§

type Target = T

The resulting type after dereferencing.
§

fn deref(&self) -> &<UseState<T> as Deref>::Target

Dereferences the value.
§

impl<T> Display for UseState<T>where T: 'static + Display,

§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
§

impl<T> DivAssign<T> for UseState<T>where T: Div<T, Output = T> + Copy,

§

fn div_assign(&mut self, rhs: T)

Performs the /= operation. Read more
§

impl<T> MulAssign<T> for UseState<T>where T: Mul<T, Output = T> + Copy,

§

fn mul_assign(&mut self, rhs: T)

Performs the *= operation. Read more
§

impl<T> Not for UseState<T>where T: Not + Copy,

§

type Output = <T as Not>::Output

The resulting type after applying the ! operator.
§

fn not(self) -> <UseState<T> as Not>::Output

Performs the unary ! operation. Read more
§

impl<T> PartialEq<T> for UseState<T>where T: PartialEq<T>,

§

fn eq(&self, other: &T) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
§

impl<T> PartialEq<UseState<T>> for UseState<T>

§

fn eq(&self, other: &UseState<T>) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
§

impl<T> PartialOrd<T> for UseState<T>where T: PartialOrd<T>,

§

fn ge(&self, other: &T) -> bool

This method tests greater than or equal to (for self and other) and is used by the >= operator. Read more
§

fn gt(&self, other: &T) -> bool

This method tests greater than (for self and other) and is used by the > operator. Read more
§

fn le(&self, other: &T) -> bool

This method tests less than or equal to (for self and other) and is used by the <= operator. Read more
§

fn lt(&self, other: &T) -> bool

This method tests less than (for self and other) and is used by the < operator. Read more
§

fn partial_cmp(&self, other: &T) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
§

impl<T> PartialOrd<UseState<T>> for UseState<T>where T: PartialOrd<T>,

§

fn ge(&self, other: &UseState<T>) -> bool

This method tests greater than or equal to (for self and other) and is used by the >= operator. Read more
§

fn gt(&self, other: &UseState<T>) -> bool

This method tests greater than (for self and other) and is used by the > operator. Read more
§

fn le(&self, other: &UseState<T>) -> bool

This method tests less than or equal to (for self and other) and is used by the <= operator. Read more
§

fn lt(&self, other: &UseState<T>) -> bool

This method tests less than (for self and other) and is used by the < operator. Read more
§

fn partial_cmp(&self, other: &UseState<T>) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
§

impl<T> SubAssign<T> for UseState<T>where T: Sub<T, Output = T> + Copy,

§

fn sub_assign(&mut self, rhs: T)

Performs the -= operation. Read more