From 8cc96629026ec4907cce5140486d83e65806a5d8 Mon Sep 17 00:00:00 2001 From: wangyaqi Date: Sun, 1 Mar 2020 03:03:37 +0800 Subject: [PATCH] fix: service removeAndInvokeRemoveHook recursively askId: 89818 --- packages/uni-app-plus/dist/service.runtime.esm.dev.js | 10 +++++++++- packages/uni-app-plus/dist/service.runtime.esm.prod.js | 10 +++++++++- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/packages/uni-app-plus/dist/service.runtime.esm.dev.js b/packages/uni-app-plus/dist/service.runtime.esm.dev.js index de5aee1be..3bcb408ce 100644 --- a/packages/uni-app-plus/dist/service.runtime.esm.dev.js +++ b/packages/uni-app-plus/dist/service.runtime.esm.dev.js @@ -6071,6 +6071,7 @@ function createPatchFunction (backend) { function removeAndInvokeRemoveHook (vnode, rm) { if (isDef(rm) || isDef(vnode.data)) { var i; + var children; var listeners = cbs.remove.length + 1; if (isDef(rm)) { // we have a recursively passed down rm callback @@ -6083,6 +6084,13 @@ function createPatchFunction (backend) { // recursively invoke hooks on child component root node if (isDef(i = vnode.componentInstance) && isDef(i = i._vnode) && isDef(i.data)) { removeAndInvokeRemoveHook(i, rm); + } else if(isDef(children = vnode.children)) { + // service层获取不到componentInstance,暂用此方式递归 + for (var i = 0; i < children.length; i++) { + if (children[i].tag) { + removeAndInvokeRemoveHook(children[i]); + } + } } for (i = 0; i < cbs.remove.length; ++i) { cbs.remove[i](vnode, rm); @@ -6779,7 +6787,7 @@ function updateDOMListeners (oldVnode, vnode) { var on = vnode.data.on || {}; var oldOn = oldVnode.data.on || {}; target$1 = vnode.elm; - + // fixed by xxxxxx 存储 vd target$1._$vd = vnode.context._$vd; var context = vnode.context; diff --git a/packages/uni-app-plus/dist/service.runtime.esm.prod.js b/packages/uni-app-plus/dist/service.runtime.esm.prod.js index ed4f4225b..e3ed94f6e 100644 --- a/packages/uni-app-plus/dist/service.runtime.esm.prod.js +++ b/packages/uni-app-plus/dist/service.runtime.esm.prod.js @@ -5289,6 +5289,7 @@ function createPatchFunction (backend) { function removeAndInvokeRemoveHook (vnode, rm) { if (isDef(rm) || isDef(vnode.data)) { var i; + var children; var listeners = cbs.remove.length + 1; if (isDef(rm)) { // we have a recursively passed down rm callback @@ -5301,6 +5302,13 @@ function createPatchFunction (backend) { // recursively invoke hooks on child component root node if (isDef(i = vnode.componentInstance) && isDef(i = i._vnode) && isDef(i.data)) { removeAndInvokeRemoveHook(i, rm); + } else if(isDef(children = vnode.children)) { + // service层获取不到componentInstance,暂用此方式递归 + for (var i = 0; i < children.length; i++) { + if (children[i].tag) { + removeAndInvokeRemoveHook(children[i]); + } + } } for (i = 0; i < cbs.remove.length; ++i) { cbs.remove[i](vnode, rm); @@ -5928,7 +5936,7 @@ function updateDOMListeners (oldVnode, vnode) { var on = vnode.data.on || {}; var oldOn = oldVnode.data.on || {}; target$1 = vnode.elm; - + // fixed by xxxxxx 存储 vd target$1._$vd = vnode.context._$vd; var context = vnode.context; -- GitLab