diff --git a/packages/uni-mp-vue/lib/vue.runtime.esm.js b/packages/uni-mp-vue/lib/vue.runtime.esm.js index db12bdfe1e232445788f6c984ec36a5b5dc4b562..0c20bc17174b4364c8429f99e50129c92d24d75d 100644 --- a/packages/uni-mp-vue/lib/vue.runtime.esm.js +++ b/packages/uni-mp-vue/lib/vue.runtime.esm.js @@ -2022,7 +2022,17 @@ function doWatch(source, cb, { immediate, deep, flush, onTrack, onTrigger } = EM } else { // default: 'pre' - scheduler = () => queuePreFlushCb(job); + scheduler = () => { + if (!instance || instance.isMounted) { + queuePreFlushCb(job); + } + else { + // with 'pre' option, the first call must happen before + // the component is mounted so it is called synchronously. + // fixed by xxxxxx https://github.com/dcloudio/uni-app/issues/3648 + job(); + } + }; } const effect = new ReactiveEffect(getter, scheduler); if ((process.env.NODE_ENV !== 'production')) {