Añade ComponentError con HTML alternativo

`prepare_component()` ahora devuelve `Result<Markup, ComponentError>` en
lugar de `Markup`, para que los componentes señalen fallos durante el
renderizado de forma explícita.

`ComponentError` encapsula un mensaje de error y un marcado HTML
alternativo opcional (`fallback`). Si se produce un error, el ciclo de
renderizado registra la traza y muestra el `fallback` en lugar del
componente fallido, sin interrumpir el resto de la página.

Lo mismo aplica a los errores devueltos por la acción `PrepareRender` de
los temas, que siguen el mismo mecanismo.
This commit is contained in:
Manuel Cillero 2026-03-21 13:15:39 +01:00
parent a0b14aec36
commit 34aeeab2d7
26 changed files with 232 additions and 100 deletions

View file

@ -2,6 +2,9 @@
use crate::html::RoutePath;
mod error;
pub use error::ComponentError;
mod definition;
pub use definition::{Component, ComponentRender};
@ -38,8 +41,8 @@ pub use context::{AssetsOp, Context, ContextError, Contextual};
/// self.renderable.map_or(true, |f| f(cx))
/// }
///
/// fn prepare_component(&self, _cx: &mut Context) -> Markup {
/// html! { "Visible component" }
/// fn prepare_component(&self, _cx: &mut Context) -> Result<Markup, ComponentError> {
/// Ok(html! { "Visible component" })
/// }
/// }
///