diff --git a/packages/yew/src/html/component/lifecycle.rs b/packages/yew/src/html/component/lifecycle.rs
index 9bde886f4d4..fca8ee27b7c 100644
--- a/packages/yew/src/html/component/lifecycle.rs
+++ b/packages/yew/src/html/component/lifecycle.rs
@@ -297,6 +297,17 @@ impl ComponentState {
.downcast_ref::>()
.map(|m| &m.component)
}
+
+ fn resume_existing_suspension(&mut self) {
+ if let Some(m) = self.suspension.take() {
+ let comp_scope = self.inner.any_scope();
+
+ let suspense_scope = comp_scope.find_parent_scope::().unwrap();
+ let suspense = suspense_scope.get_component().unwrap();
+
+ suspense.resume(m);
+ }
+ }
}
pub(crate) struct CreateRunner {
@@ -370,6 +381,7 @@ impl ComponentState {
)]
fn destroy(mut self, parent_to_detach: bool) {
self.inner.destroy();
+ self.resume_existing_suspension();
match self.render_state {
#[cfg(feature = "csr")]
@@ -479,14 +491,7 @@ impl ComponentState {
fn commit_render(&mut self, shared_state: &Shared