Skip to content

Commit 9a719fe

Browse files
committed
chore: re-use current active effect for toStore if it already exists
1 parent cd56c1d commit 9a719fe

File tree

2 files changed

+9
-2
lines changed

2 files changed

+9
-2
lines changed

.changeset/tender-deers-hope.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+
chore: re-use current active effect for toStore if it already exists

packages/svelte/src/store/index-client.js

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import {
66
} from '../internal/client/reactivity/effects.js';
77
import { get, writable } from './shared/index.js';
88
import { createSubscriber } from '../reactivity/create-subscriber.js';
9+
import { active_effect } from '../internal/client/runtime.js';
910

1011
export { derived, get, readable, readonly, writable } from './shared/index.js';
1112

@@ -46,12 +47,13 @@ export function toStore(get, set) {
4647
let ran = init_value !== get();
4748

4849
// TODO do we need a different implementation on the server?
49-
const teardown = effect_root(() => {
50+
var render = () => {
5051
render_effect(() => {
5152
const value = get();
5253
if (ran) set(value);
5354
});
54-
});
55+
}
56+
const teardown = active_effect === null ? effect_root(render) : render();
5557

5658
ran = true;
5759

0 commit comments

Comments
 (0)