Function freya::hooks::use_canvas

source ·
pub fn use_canvas(
    renderer_cb: impl Fn() -> Box<dyn Fn(&mut CanvasRunnerContext<'_>) + Sync + Send> + 'static,
) -> UseCanvas
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();
        Box::new(move |ctx| {
            // Draw using the canvas !
            // use `curr`
        })
    });

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