Skip to content

Commit a8a8a2c

Browse files
committed
Try solving computed immediate with sideEffects: false
1 parent c6453ac commit a8a8a2c

File tree

2 files changed

+3
-2
lines changed

2 files changed

+3
-2
lines changed

src/ObservableObject.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1007,7 +1007,7 @@ const activateNodeBase = (globalState.activateNode = function activateNodeBase(
10071007
let isSettingFromSubscribe = false;
10081008
let _mode: 'assign' | 'set' = 'set';
10091009
if (node.activationState) {
1010-
const { onSet, subscribe, get, initial, retry, waitFor } = node.activationState;
1010+
const { onSet, subscribe, get, initial, retry, waitFor, sideEffects } = node.activationState;
10111011
// @ts-expect-error asdf
10121012
const run = () => get!({ updateLastSync: noop, setMode: (mode) => (_mode = mode) });
10131013
value = get
@@ -1063,7 +1063,7 @@ const activateNodeBase = (globalState.activateNode = function activateNodeBase(
10631063
}
10641064
};
10651065

1066-
onChange(node, doSet as any, wasPromise ? undefined : { immediate: true });
1066+
onChange(node, doSet as any, sideEffects === false || wasPromise ? undefined : { immediate: true });
10671067
}
10681068
if (process.env.NODE_ENV === 'development' && node.activationState!.cache) {
10691069
// TODO Better message

src/observableInterfaces.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -151,6 +151,7 @@ export interface ActivateParams<T = any> {
151151
get?: (params: ActivateGetParams) => T;
152152
retry?: RetryOptions;
153153
mode?: 'assign' | 'set' | 'dateModified';
154+
sideEffects?: boolean;
154155
}
155156
// eslint-disable-next-line @typescript-eslint/no-unused-vars
156157
export interface ActivateParamsWithLookup<T extends Record<string, any> = Record<string, any>>

0 commit comments

Comments
 (0)