Nssesary Traits

To create a component in Html, it is needed to implment some traits.

Component

Component is a comon trait for a component. This trait defines types of Props,Msg andEvents in a component.

pub trait Component: Sized {
    type Props;
    type Event;
    type Msg;
}

Constructor

This trait implements a constructor for a component. This constructor will be used, when the coponent is mounted to Html.

You can use props: Self::Props to initialize a component. In most cases, props gives from a parent component.

pub trait Constructor: Component {
    fn constructor(_props: Self::Props) -> Self;
}

Update

This trait implements some features. The common point in these features is that its are used to update a component.

In most cases, update will be used. on_assemble will be used when a component is mounted first time. on_load will be used when a compoent is mounted from the second time.

You can update your component in on_load by props.

Cmd<Self> is a command to kagura. This usages are descripts later.

pub trait Update: Component {
    fn on_assemble(self: Pin<&mut Self>) -> Cmd<Self> {
        Cmd::None
    }
    fn on_load(self: Pin<&mut Self>, _props: Self::Props) -> Cmd<Self> {
        Cmd::None
    }
    fn update(self: Pin<&mut Self>, _msg: Self::Msg) -> Cmd<Self> {
        Cmd::None
    }
}

Render<Html>

When you create a component to render Html, it is needed to implements Render<Html>.

pub trait Render<T>: Component {
    type Children: Default;
    fn render(&self, children: Self::Children) -> T;
}

HtmlComponent

All of implements in this trait are already implemented. This trait is needed to convert a component to a Html node.

Last updated