Don't run effects from dead recycled scopes (#3201)
* Don't run effects from dead recycled scopes * Fix scheduler
This commit is contained in:
1 parent
c1f3a6868e
commit
128608f3b2
2 files changed
+20
-21
No files matched your search
@@ -1,6 +1,7 @@
|
||||
use crate::arena::ElementRef;
|
||||
use crate::innerlude::{DirtyTasks, Effect};
|
||||
use crate::nodes::VNodeMount;
|
||||
use crate::scheduler::ScopeOrder;
|
||||
use crate::scope_context::SuspenseLocation;
|
||||
use crate::{
|
||||
innerlude::{LocalTask, SchedulerMsg},
|
||||
@@ -129,6 +130,11 @@ impl Runtime {
|
||||
self.remove_task(id);
|
||||
}
|
||||
|
||||
// Drop all queued effects
|
||||
self.pending_effects
|
||||
.borrow_mut()
|
||||
.remove(&ScopeOrder::new(scope.height, scope.id));
|
||||
|
||||
// Drop all hooks in reverse order in case a hook depends on another hook.
|
||||
for hook in scope.hooks.take().drain(..).rev() {
|
||||
drop(hook);
|
||||
|
||||
Reference in new issue
Block a user