stellation_frontend/components/
client_only.rs

1use std::ops::Deref;
2
3use yew::html::ChildrenProps;
4use yew::prelude::*;
5
6/// A component that automatically excludes its children from server-side rendering.
7#[function_component]
8pub fn ClientOnly(props: &ChildrenProps) -> Html {
9    let should_render = use_state(|| false);
10
11    // Effects are only run on the client side.
12    {
13        use_effect_with_deps(
14            |should_render_setter| {
15                should_render_setter.set(true);
16            },
17            should_render.setter(),
18        );
19    }
20
21    match should_render.deref() {
22        true => html! {<>{props.children.clone()}</>},
23        false => Html::default(),
24    }
25}