Skip to content

Commit bd1fb74

Browse files
committed
Fix derived pause logic
1 parent d04e4bb commit bd1fb74

File tree

2 files changed

+7
-6
lines changed

2 files changed

+7
-6
lines changed

packages/svelte/src/internal/client/reactivity/deriveds.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,7 @@ let stack = [];
116116
* @param {Derived} derived
117117
* @returns {Effect | null}
118118
*/
119-
function get_derived_parent_effect(derived) {
119+
export function get_derived_parent_effect(derived) {
120120
var parent = derived.parent;
121121
while (parent !== null) {
122122
if ((parent.f & DERIVED) === 0) {

packages/svelte/src/internal/client/reactivity/props.js

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,8 @@ import {
99
} from '../../../constants.js';
1010
import { get_descriptor, is_function } from '../../shared/utils.js';
1111
import { mutable_source, set, source, update } from './sources.js';
12-
import { derived, derived_safe_equal } from './deriveds.js';
13-
import { get, captured_signals, untrack, active_effect } from '../runtime.js';
12+
import { derived, derived_safe_equal, get_derived_parent_effect } from './deriveds.js';
13+
import { active_effect, captured_signals, get, untrack } from '../runtime.js';
1414
import { safe_equals } from './equality.js';
1515
import * as e from '../errors.js';
1616
import {
@@ -23,7 +23,6 @@ import {
2323
import { proxy } from '../proxy.js';
2424
import { capture_store_binding } from './store.js';
2525
import { legacy_mode_flag } from '../../flags/index.js';
26-
import { component_context } from '../context.js';
2726

2827
/**
2928
* @param {((value?: number) => number)} fn
@@ -270,7 +269,9 @@ export function props(...props) {
270269
* @param {Derived} derived
271270
*/
272271
function is_paused_or_destroyed(derived) {
273-
return (derived.f & (DESTROYED | INERT)) !== 0;
272+
const parent = get_derived_parent_effect(derived);
273+
if (!parent) return false;
274+
return (parent.f & (DESTROYED | INERT)) !== 0;
274275
}
275276

276277
/**
@@ -449,7 +450,7 @@ export function prop(props, key, flags, fallback) {
449450
}
450451

451452
if (is_paused_or_destroyed(current_value)) {
452-
return value;
453+
return current_value.v;
453454
}
454455

455456
return get(current_value);

0 commit comments

Comments
 (0)