Skip to content

Commit 21e5bce

Browse files
committed
fix: adjust effect ordering
1 parent 468ecda commit 21e5bce

File tree

3 files changed

+47
-0
lines changed

3 files changed

+47
-0
lines changed
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
import { test } from '../../test';
2+
import { log } from './log.js';
3+
4+
export default test({
5+
get props() {
6+
return { n: 0 };
7+
},
8+
9+
before_test() {
10+
log.length = 0;
11+
},
12+
13+
async test({ assert, component }) {
14+
assert.deepEqual(log, ['$effect.pre 0', 'another $effect.pre 1', 'render n0', 'render i1']);
15+
16+
log.length = 0;
17+
component.n += 1;
18+
19+
assert.deepEqual(log, ['$effect.pre 1', 'another $effect.pre 2', 'render n1', 'render i2']);
20+
}
21+
});
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
/** @type {any[]} */
2+
export const log = [];
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
<script>
2+
import { untrack } from 'svelte';
3+
import { log } from './log.js';
4+
5+
let { n = 0 } = $props();
6+
7+
let i = $state(0);
8+
9+
function logRender(i) {
10+
log.push(`render ${i}`);
11+
}
12+
13+
$effect.pre(() => {
14+
log.push(`$effect.pre ${n}`);
15+
untrack(() => i++)
16+
});
17+
18+
$effect.pre(() => {
19+
log.push('another $effect.pre '+ i);
20+
})
21+
</script>
22+
23+
<p>{logRender(`n${n}`)}</p>
24+
<p>{logRender(`i${i}`)}</p>

0 commit comments

Comments
 (0)