pub struct HookContext {
pub inner: Rc<RefCell<HookContextInner>>,
}Expand description
Manages hook state across render cycles for a DynamicNode.
Stores boxed Any values keyed by hook call order, enabling use_signal
and similar hooks to persist state between re-renders of the same
dynamic node.
Implements Clone for ergonomic use; all clones share the same underlying state.
Fields§
§inner: Rc<RefCell<HookContextInner>>Shared reference to the heap-allocated hook context inner state.
Implementations§
Source§impl HookContext
Implementation of hook context lifecycle and hook index management.
impl HookContext
Implementation of hook context lifecycle and hook index management.
Sourcepub fn reset_index(&mut self)
pub fn reset_index(&mut self)
Resets the hook index for a new render cycle.
Sets the internal hook index back to zero so that subsequent
use_signal calls start indexing from the beginning of the hook list.
Sourcepub fn switch_arm(&mut self, changed: usize)
pub fn switch_arm(&mut self, changed: usize)
Notifies the hook context that a match arm is being entered.
If the arm index has changed, all existing hooks and cleanups are cleared and re-initialized for the new arm. If the arm is unchanged, only the hook index is reset.
§Arguments
usize- The index of the new match arm.
Source§impl HookContext
Associated functions for hook context management.
impl HookContext
Associated functions for hook context management.
These are crate-internal static methods for managing the active hook context, creating signals, registering cleanups, and scheduling intervals.
Sourcepub fn current() -> HookContext
pub fn current() -> HookContext
Returns a shared reference to the current hook context global state.
SAFETY: Must only be called from the main thread (WASM single-threaded context).
Returns the currently active HookContext for this thread.
If no hook context has been set, creates and stores a default one in
the thread-local CURRENT_HOOK_CONTEXT cell so subsequent calls on
this thread return the same instance.
§Returns
HookContext- The currently active hook context.
Sourcepub fn with<F, R>(context: HookContext, callback: F) -> Rwhere
F: FnOnce() -> R,
pub fn with<F, R>(context: HookContext, callback: F) -> Rwhere
F: FnOnce() -> R,
Runs a closure with the given HookContext set as the active context.
Saves the previous context, sets the new one, executes the closure, and restores the previous context afterward. The save/restore pair is scoped to the current thread, so concurrent callers cannot restore each other’s context.
§Arguments
HookContext- The hook context to set as active during closure execution.F- The closure to execute with the given context.
§Returns
R- The result of the closure execution.
Source§impl HookContext
Inherent implementation of HookContext.
impl HookContext
Inherent implementation of HookContext.
Sourcepub fn use_hook<T, F>(factory: F) -> T
pub fn use_hook<T, F>(factory: F) -> T
Registers a hook value with the current hook context and returns the existing instance if one was stored at this index from a previous render cycle.
This is the public extension point for custom hook types.
ui and downstream crates implement use_form, use_i18n, etc.
on top of this primitive instead of poking at the hook array
directly. factory runs once per hook slot on the first render;
subsequent renders in the same arm return the previously stored
instance.
§Arguments
F- Constructor that produces a fresh value of typeTwhen the slot has never been written.
§Returns
T- Either the previously-stored value (cheap clone / copy) or a fresh one fromfactory.
Source§impl HookContext
impl HookContext
pub fn get_inner(&self) -> &Rc<RefCell<HookContextInner>>
pub fn get_mut_inner(&mut self) -> &mut Rc<RefCell<HookContextInner>>
pub fn set_inner(&mut self, val: Rc<RefCell<HookContextInner>>) -> &mut Self
Source§impl HookContext
impl HookContext
pub fn new(inner: Rc<RefCell<HookContextInner>>) -> Self
Trait Implementations§
Source§impl Clone for HookContext
Clones the hook context, sharing the same inner state.
impl Clone for HookContext
Clones the hook context, sharing the same inner state.
All clones share the same underlying Rc<RefCell<HookContextInner>>,
so modifications through one clone are visible through all others.
§Returns
Self- A newHookContextsharing the same inner state.
Source§fn clone(&self) -> Self
fn clone(&self) -> Self
Clones the HookContext by reusing shared, cheap-to-clone state where possible.
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for HookContext
impl Debug for HookContext
Source§impl Default for HookContext
Provides a default empty hook context.
impl Default for HookContext
Provides a default empty hook context.
Creates a fresh Rc<RefCell<HookContextInner>> with default values
(empty hook list, zero hook index, empty cleanup list).
§Returns
Self- A newHookContextwith default inner state.
Source§fn default() -> Self
fn default() -> Self
Constructs a default HookContext value.