Skip to content

Commit d0bd660

Browse files
committed
fix: improve handled of unowned derived signals
1 parent b3084bc commit d0bd660

File tree

3 files changed

+54
-0
lines changed

3 files changed

+54
-0
lines changed

.changeset/rich-garlics-laugh.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"svelte": patch
3+
---
4+
5+
fix: improve handled of unowned derived signals
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
import { test } from '../../test';
2+
3+
export default test({
4+
async test({ assert, target }) {
5+
// The test has a bunch of queueMicrotasks
6+
await Promise.resolve();
7+
await Promise.resolve();
8+
await Promise.resolve();
9+
10+
assert.htmlEqual(
11+
target.innerHTML,
12+
`<div>Zeeba Neighba</div>`
13+
);
14+
}
15+
});
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
<script context="module">
2+
export class Thing {
3+
data = $state();
4+
5+
subscribe() {
6+
queueMicrotask(() => {
7+
this.data = {
8+
name: `Zeeba Neighba`,
9+
};
10+
});
11+
}
12+
13+
name = $derived(this.data?.name);
14+
}
15+
16+
export class Things {
17+
thing = $state();
18+
19+
subscribe() {
20+
queueMicrotask(() => {
21+
this.thing = new Thing();
22+
this.thing.subscribe();
23+
this.thing.name;
24+
});
25+
}
26+
}
27+
</script>
28+
29+
<script>
30+
let model = new Things();
31+
$effect(() => model.subscribe());
32+
</script>
33+
34+
<div>{model.thing?.name}</div>

0 commit comments

Comments
 (0)