pub trait Component<Message, Theme = Theme, Renderer = Renderer> {
type State: Default;
type Event;
// Required methods
fn update(
&mut self,
state: &mut Self::State,
event: Self::Event,
) -> Option<Message>;
fn view(
&self,
state: &Self::State,
) -> Element<'_, Self::Event, Theme, Renderer>;
// Provided methods
fn operate(&self, _state: &mut Self::State, _operation: &mut dyn Operation) { ... }
fn size_hint(&self) -> Size<Length> { ... }
}
Expand description
A reusable, custom widget that uses The Elm Architecture.
A Component
allows you to implement custom widgets as if they were
iced
applications with encapsulated state.
In other words, a Component
allows you to turn iced
applications into
custom widgets and embed them without cumbersome wiring.
A Component
produces widgets that may fire an Event
and update the internal state of the Component
.
Additionally, a Component
is capable of producing a Message
to notify
the parent application of any relevant interactions.
Β§State
A component can store its state in one of two ways: either as data within the
implementor of the trait, or in a type State
that is managed
by the runtime and provided to the trait methods. These two approaches are not
mutually exclusive and have opposite pros and cons.
For instance, if a piece of state is needed by multiple components that reside in different branches of the tree, then itβs more convenient to let a common ancestor store it and pass it down.
On the other hand, if a piece of state is only needed by the component itself,
you can store it as part of its internal State
.