提交 3204f78a 编写于 作者: fxy060608's avatar fxy060608

fix(mp-toutiao): Ensure instance update when props change (#3625)

上级 449471e7
......@@ -5,6 +5,8 @@ import {
// @ts-ignore
findComponentPropsData,
// @ts-ignore
hasQueueJob,
// @ts-ignore
invalidateJob,
// @ts-ignore
updateProps,
......@@ -60,11 +62,15 @@ export function updateComponentProps(
const nextProps = findComponentPropsData(up) || {}
if (hasPropsChanged(prevProps, nextProps)) {
updateProps(instance, nextProps, prevProps, false)
const index = invalidateJob(instance.update)
if (hasQueueJob(instance.update)) {
invalidateJob(instance.update)
}
if (__PLATFORM__ === 'mp-toutiao' || __PLATFORM__ === 'mp-baidu') {
// 字节跳动小程序 https://github.com/dcloudio/uni-app/issues/3340
// 百度小程序 https://github.com/dcloudio/uni-app/issues/3612
index === -1 && instance.update()
if (!hasQueueJob(instance.update)) {
instance.update()
}
} else {
instance.update()
}
......
......@@ -1456,13 +1456,14 @@ function queueFlush() {
currentFlushPromise = resolvedPromise.then(flushJobs);
}
}
function hasQueueJob(job) {
return queue.indexOf(job) > -1;
}
function invalidateJob(job) {
const i = queue.indexOf(job);
if (i > flushIndex) {
queue.splice(i, 1);
}
// fixed by xxxxxx
return i;
}
function queueCb(cb, activeQueue, pendingQueue, index) {
if (!isArray(cb)) {
......@@ -5201,4 +5202,4 @@ function initCssVarsRender(instance, getter) {
function withModifiers() { }
function createVNode$1() { }
export { EffectScope, Fragment, ReactiveEffect, Text, callWithAsyncErrorHandling, callWithErrorHandling, computed$1 as computed, createVNode$1 as createVNode, createVueApp, customRef, defineAsyncComponent, defineComponent, defineEmits, defineExpose, defineProps, diff, effect, effectScope, getCurrentInstance, getCurrentScope, getExposeProxy, guardReactiveProps, inject, injectHook, invalidateJob, isInSSRComponentSetup, isProxy, isReactive, isReadonly, isRef, logError, markRaw, mergeDefaults, mergeProps, nextTick, onActivated, onBeforeMount, onBeforeUnmount, onBeforeUpdate, onDeactivated, onErrorCaptured, onMounted, onRenderTracked, onRenderTriggered, onScopeDispose, onServerPrefetch, onUnmounted, onUpdated, patch, provide, proxyRefs, queuePostFlushCb, reactive, readonly, ref, resolveComponent, resolveDirective, resolveFilter, setCurrentRenderingInstance, setTemplateRef, shallowReactive, shallowReadonly, shallowRef, stop, toHandlers, toRaw, toRef, toRefs, triggerRef, unref, updateProps, useAttrs, useCssModule, useCssVars, useSSRContext, useSlots, version, warn$1 as warn, watch, watchEffect, watchPostEffect, watchSyncEffect, withAsyncContext, withCtx, withDefaults, withDirectives, withModifiers, withScopeId };
export { EffectScope, Fragment, ReactiveEffect, Text, callWithAsyncErrorHandling, callWithErrorHandling, computed$1 as computed, createVNode$1 as createVNode, createVueApp, customRef, defineAsyncComponent, defineComponent, defineEmits, defineExpose, defineProps, diff, effect, effectScope, getCurrentInstance, getCurrentScope, getExposeProxy, guardReactiveProps, hasQueueJob, inject, injectHook, invalidateJob, isInSSRComponentSetup, isProxy, isReactive, isReadonly, isRef, logError, markRaw, mergeDefaults, mergeProps, nextTick, onActivated, onBeforeMount, onBeforeUnmount, onBeforeUpdate, onDeactivated, onErrorCaptured, onMounted, onRenderTracked, onRenderTriggered, onScopeDispose, onServerPrefetch, onUnmounted, onUpdated, patch, provide, proxyRefs, queuePostFlushCb, reactive, readonly, ref, resolveComponent, resolveDirective, resolveFilter, setCurrentRenderingInstance, setTemplateRef, shallowReactive, shallowReadonly, shallowRef, stop, toHandlers, toRaw, toRef, toRefs, triggerRef, unref, updateProps, useAttrs, useCssModule, useCssVars, useSSRContext, useSlots, version, warn$1 as warn, watch, watchEffect, watchPostEffect, watchSyncEffect, withAsyncContext, withCtx, withDefaults, withDirectives, withModifiers, withScopeId };
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册