Struct ErrorBoundaryProps

Source
pub struct ErrorBoundaryProps<F, IV>
where F: Fn(RwSignal<Errors>) -> IV + 'static, IV: IntoView,
{ 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>
where F: Fn(RwSignal<Errors>) -> IV + 'static, IV: IntoView,

Source

pub fn builder() -> ErrorBoundaryPropsBuilder<F, IV>

Create a builder for building ErrorBoundaryProps. On the builder, call .children(...), .fallback(...) to set the values of the fields. Finally, call .build() to create the instance of ErrorBoundaryProps.

Trait Implementations§

Source§

impl<F, IV> IntoView for ErrorBoundaryProps<F, IV>
where F: Fn(RwSignal<Errors>) -> IV + 'static, IV: IntoView,

Source§

fn into_view(self) -> View

Converts the value into View.

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> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts 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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts 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
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

impl<T> ErasedDestructor for T
where T: 'static,

Source§

impl<T> MaybeSendSync for T