pull/14443/head
Dominic Gannaway 2 years ago
parent 0953c0a85d
commit af875b3f03

@ -112,7 +112,7 @@ let stack = [];
* @param {Derived} derived * @param {Derived} derived
* @returns {Effect | null} * @returns {Effect | null}
*/ */
export function get_derived_parent_effect(derived) { function get_derived_parent_effect(derived) {
var parent = derived.parent; var parent = derived.parent;
while (parent !== null) { while (parent !== null) {
if ((parent.f & DERIVED) === 0) { if ((parent.f & DERIVED) === 0) {

@ -29,12 +29,7 @@ import {
import { flush_tasks } from './dom/task.js'; import { flush_tasks } from './dom/task.js';
import { add_owner } from './dev/ownership.js'; import { add_owner } from './dev/ownership.js';
import { mutate, set, source } from './reactivity/sources.js'; import { mutate, set, source } from './reactivity/sources.js';
import { import { destroy_derived, execute_derived, update_derived } from './reactivity/deriveds.js';
destroy_derived,
execute_derived,
get_derived_parent_effect,
update_derived
} from './reactivity/deriveds.js';
import * as e from './errors.js'; import * as e from './errors.js';
import { lifecycle_outside_component } from '../shared/errors.js'; import { lifecycle_outside_component } from '../shared/errors.js';
import { FILENAME } from '../../constants.js'; import { FILENAME } from '../../constants.js';
@ -771,9 +766,14 @@ export function get(signal) {
} }
} else if (is_derived && /** @type {Derived} */ (signal).deps === null) { } else if (is_derived && /** @type {Derived} */ (signal).deps === null) {
var derived = /** @type {Derived} */ (signal); var derived = /** @type {Derived} */ (signal);
var parent_effect = get_derived_parent_effect(derived); var parent = derived.parent;
if (parent_effect !== null && !parent_effect.deriveds?.includes(derived)) { if (
parent !== null &&
(parent.f & DERIVED) === 0 &&
!(/** @type {Effect} */ (parent).deriveds?.includes(derived))
) {
var parent_effect = /** @type {Effect} */ (parent);
(parent_effect.deriveds ??= []).push(derived); (parent_effect.deriveds ??= []).push(derived);
} }
} }

Loading…
Cancel
Save