diff --git a/packages/tools/mobx.ts b/packages/tools/mobx.ts index a24bc94..c4c2b90 100644 --- a/packages/tools/mobx.ts +++ b/packages/tools/mobx.ts @@ -1,6 +1,6 @@ import type { IReactionDisposer, IReactionOptions, IReactionPublic } from 'mobx'; import { autorun, reaction } from 'mobx'; -import { debounce } from 'radash'; +import { debounce, omit } from 'radash'; export function disposableReaction( mustBeDisposed: () => boolean, @@ -14,6 +14,10 @@ export function disposableReaction( ) { let disposer: IReactionDisposer | undefined; + if (!mustBeDisposed()) { + disposer = reaction(expression, effect, reactionOpts); + } + function cleanDisposer() { disposer = undefined; } @@ -23,7 +27,8 @@ export function disposableReaction( if (disposer !== undefined) disposer(); cleanDisposer(); } else { - disposer = reaction(expression, effect, reactionOpts); + const opts = reactionOpts ? omit(reactionOpts, ['fireImmediately']) : undefined; + disposer = reaction(expression, effect, opts); } }); }