Function freya::prelude::use_canvas

source ·
pub fn use_canvas<T>(renderer_cb: impl FnMut() -> T + 'static) -> UseCanvas
where T: FnMut(&mut CanvasRunnerContext<'_>) + Sync + Send + 'static,
Expand description

Register a rendering hook to gain access to the Canvas. Reactivity managed through signals.

§Usage

fn app() -> Element {
    let (reference, size) = use_node_signal();
    let mut value = use_signal(|| 0);
    let platform = use_platform();

    let canvas = use_canvas(move || {
        let curr = value();
        platform.invalidate_drawing_area(size.peek().area);
        platform.request_animation_frame();
        move |ctx| {
            // Draw using the canvas !
            // use `curr`
        }
    });

    rsx!(rect {
        onclick: move |_| {
            value += 1;
        },
        canvas_reference: canvas.attribute(),
        reference,
        width: "fill",
        height: "fill",
    })
}