Skip to content

Commit 80557bb

Browse files
authored
fix: ensure clearing of old values happens independent of root flushes (#15664)
* fix: ensure clearing of old values happens indepedent of root flushes * lint * test
1 parent 5b9053d commit 80557bb

File tree

5 files changed

+39
-1
lines changed

5 files changed

+39
-1
lines changed

Diff for: .changeset/kind-elephants-behave.md

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'svelte': patch
3+
---
4+
5+
fix: ensure clearing of old values happens independent of root flushes

Diff for: packages/svelte/src/internal/client/runtime.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -692,6 +692,7 @@ function flush_queued_root_effects() {
692692
var collected_effects = process_effects(root_effects[i]);
693693
flush_queued_effects(collected_effects);
694694
}
695+
old_values.clear();
695696
}
696697
} finally {
697698
is_flushing = false;
@@ -701,7 +702,6 @@ function flush_queued_root_effects() {
701702
if (DEV) {
702703
dev_effect_stack = [];
703704
}
704-
old_values.clear();
705705
}
706706
}
707707

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
<script>
2+
import { onMount } from 'svelte'
3+
4+
let thing = $state(0)
5+
6+
onMount(() => {
7+
thing = 1;
8+
return () => {
9+
console.log(thing);
10+
}
11+
})
12+
</script>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
import { test } from '../../test';
2+
3+
export default test({
4+
async test({ assert, logs }) {
5+
assert.deepEqual(logs, [1]);
6+
}
7+
});
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
<script>
2+
import { onMount } from "svelte"
3+
import Component from './Component.svelte';
4+
5+
let key = $state(0);
6+
7+
onMount(() => {
8+
key = 1;
9+
})
10+
</script>
11+
12+
{#key key}
13+
<Component />
14+
{/key}

0 commit comments

Comments
 (0)