Function freya::prelude::use_animation

source ·
pub fn use_animation<Animated>(
    run: impl Fn(&mut Context) -> Animated + 'static
) -> ReadOnlySignal<UseAnimator<Animated>>
where Animated: PartialEq + 'static,
Expand description

Animate your elements easily.

Usage

With a simple animation:

fn app() -> Element {
    let animation = use_animation(|ctx| ctx.with(AnimNum::new(0., 100.).time(50)));

    let animations = animation.read();
    let width = animations.get().read().as_f32();

    use_hook(move || {
        animation.read().start();
    });

    rsx!(
        rect {
            width: "{width}",
            height: "100%",
            background: "blue"
        }
    )
}

Grouping various animations.

fn app() -> Element {
    let animation = use_animation(|ctx| {
        (
            ctx.with(AnimNum::new(0., 100.).time(50)),
            ctx.with(AnimColor::new("red", "blue").time(50))
        )
    });

    let animations = animation.read();
    let (width, color) = animations.get();

    use_hook(move || {
        animation.read().start();
    });

    rsx!(
        rect {
            width: "{width.read().as_f32()}",
            height: "100%",
            background: "{color.read().as_string()}"
        }
    )
}