#[pre_hooks]
Expand description
An attribute macro that allows you to add hooks that will execute before your component body
See Also:
post_hooks
for an alternative that runs after your component body
Hooks allow you to create reusable logic that can be applied to multiple components.
§Usage Example
ⓘ
#[pre_hooks(use_button_notified_state)]
pub fn image_button(mut context: WidgetContext) -> WidgetNode {
// Do stuff and potentially use state added by the `use_button_notified_state` hook
}
§Creating a Hook
Hooks are simply functions that take a mutable reference to the component’s
[WidgetContext
][raui_core::widget::context::WidgetContext].
ⓘ
pub fn use_button_notified_state(context: &mut WidgetContext) {
// hook into the lifecycle of whatever widget this hook is applied to
context.life_cycle.change(|context| {
for msg in context.messenger.messages {
// listen for button messages
if let Some(msg) = msg.as_any().downcast_ref::<ButtonNotifyMessage>() {
// And modify the context state with the button info
let _ = context.state.write_with(msg.state);
}
}
});
}