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