pub struct ErrorBoundaryProps<F, IV>{
pub children: Box<dyn FnOnce() -> Fragment>,
pub fallback: F,
}
Expand description
Props for the ErrorBoundary
component.
When you render a Result<_, _>
in your view, in the Err
case it will
render nothing, and search up through the view tree for an <ErrorBoundary/>
.
This component lets you define a fallback that should be rendered in that
error case, allowing you to handle errors within a section of the interface.
let (value, set_value) = create_signal(Ok(0));
let on_input =
move |ev| set_value.set(event_target_value(&ev).parse::<i32>());
view! {
<input type="text" on:input=on_input/>
<ErrorBoundary
fallback=move |_| view! { <p class="error">"Enter a valid number."</p>}
>
<p>"Value is: " {move || value.get()}</p>
</ErrorBoundary>
}
§Interaction with <Suspense/>
If you use this with a <Suspense/>
or <Transition/>
component, note that the
<ErrorBoundary/>
should go inside the <Suspense/>
, not the other way around,
if there’s a chance that the <ErrorBoundary/>
will begin in the error state.
This is a limitation of the current design of the two components and the way they
hydrate. Placing the <ErrorBoundary/>
outside the <Suspense/>
means that
it is rendered on the server without any knowledge of the suspended view, so it
will always be rendered on the server as if there were no errors, but might need
to be hydrated with errors, depending on the actual result.
view! {
<Suspense fallback=move || view! { <p>"Loading..."</p> }>
<ErrorBoundary fallback=|errors| view! { <ErrorTemplate errors=errors/>}>
{move || {
/* etc. */
§Required Props
- children:
Children
- The components inside the tag which will get rendered
- fallback: [
F
]- A fallback that will be shown if an error occurs.
Fields§
§children: Box<dyn FnOnce() -> Fragment>
The components inside the tag which will get rendered
fallback: F
A fallback that will be shown if an error occurs.
Implementations§
Source§impl<F, IV> ErrorBoundaryProps<F, IV>
impl<F, IV> ErrorBoundaryProps<F, IV>
Trait Implementations§
Auto Trait Implementations§
impl<F, IV> Freeze for ErrorBoundaryProps<F, IV>where
F: Freeze,
impl<F, IV> !RefUnwindSafe for ErrorBoundaryProps<F, IV>
impl<F, IV> !Send for ErrorBoundaryProps<F, IV>
impl<F, IV> !Sync for ErrorBoundaryProps<F, IV>
impl<F, IV> Unpin for ErrorBoundaryProps<F, IV>where
F: Unpin,
impl<F, IV> !UnwindSafe for ErrorBoundaryProps<F, IV>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read more