diff --git a/goldens/public-api/core/primitives/signals/index.api.md b/goldens/public-api/core/primitives/signals/index.api.md index 86630c8f7e3..82a8108f364 100644 --- a/goldens/public-api/core/primitives/signals/index.api.md +++ b/goldens/public-api/core/primitives/signals/index.api.md @@ -16,8 +16,6 @@ export interface BaseEffectNode extends ReactiveNode { // (undocumented) fn: () => void; // (undocumented) - hasRun: boolean; - // (undocumented) run(): void; } diff --git a/packages/core/primitives/signals/src/effect.ts b/packages/core/primitives/signals/src/effect.ts index acd9f484428..a380b542732 100644 --- a/packages/core/primitives/signals/src/effect.ts +++ b/packages/core/primitives/signals/src/effect.ts @@ -27,7 +27,6 @@ export type EffectCleanupFn = () => void; export type EffectCleanupRegisterFn = (cleanupFn: EffectCleanupFn) => void; export interface BaseEffectNode extends ReactiveNode { - hasRun: boolean; fn: () => void; destroy(): void; cleanup(): void; @@ -40,16 +39,15 @@ export const BASE_EFFECT_NODE: Omit 0 && !consumerPollProducersForChange(node)) { return; } - node.hasRun = true; + node.version++; const prevNode = consumerBeforeComputation(node); try { node.cleanup(); diff --git a/packages/core/primitives/signals/src/watch.ts b/packages/core/primitives/signals/src/watch.ts index ded4d82cdb3..f9ed2402f27 100644 --- a/packages/core/primitives/signals/src/watch.ts +++ b/packages/core/primitives/signals/src/watch.ts @@ -56,7 +56,6 @@ export interface Watch { [SIGNAL]: WatchNode; } export interface WatchNode extends ReactiveNode { - hasRun: boolean; fn: ((onCleanup: WatchCleanupRegisterFn) => void) | null; schedule: ((watch: Watch) => void) | null; cleanupFn: WatchCleanupFn; @@ -111,10 +110,10 @@ export function createWatch( } node.dirty = false; - if (node.hasRun && !consumerPollProducersForChange(node)) { + if (node.version > 0 && !consumerPollProducersForChange(node)) { return; } - node.hasRun = true; + node.version++; const prevConsumer = consumerBeforeComputation(node); try { @@ -152,7 +151,6 @@ const WATCH_NODE: Partial = /* @__PURE__ */ (() => { node.schedule(node.ref); } }, - hasRun: false, cleanupFn: NOOP_CLEANUP_FN, }; })();