From 676ab63b86a9f8496a334caf2eb57fcdacef55fa Mon Sep 17 00:00:00 2001 From: fxy060608 Date: Thu, 11 Jul 2019 14:30:17 +0800 Subject: [PATCH] fix(h5): improve toast,loading logic #541 --- src/core/helpers/protocol/popup.js | 4 +++ src/core/service/api/popup.js | 2 +- src/platforms/h5/components/app/index.vue | 3 +- .../h5/components/app/popup/mixins/toast.js | 28 +++++++++++++++---- 4 files changed, 28 insertions(+), 9 deletions(-) diff --git a/src/core/helpers/protocol/popup.js b/src/core/helpers/protocol/popup.js index c2b5ae689..a2838be96 100644 --- a/src/core/helpers/protocol/popup.js +++ b/src/core/helpers/protocol/popup.js @@ -90,6 +90,10 @@ export const showLoading = { visible: { type: Boolean, default: true + }, + isShowLoading: { + type: Boolean, + default: true } } diff --git a/src/core/service/api/popup.js b/src/core/service/api/popup.js index 13db31a00..f07488fcc 100644 --- a/src/core/service/api/popup.js +++ b/src/core/service/api/popup.js @@ -27,7 +27,7 @@ export function showLoading (args) { } export function hideLoading () { - emit('onHideToast') + emit('onHideLoading') return {} } diff --git a/src/platforms/h5/components/app/index.vue b/src/platforms/h5/components/app/index.vue index 1718eeedf..9b1b17ac7 100644 --- a/src/platforms/h5/components/app/index.vue +++ b/src/platforms/h5/components/app/index.vue @@ -11,8 +11,7 @@ v-show="showTabBar" v-bind="tabBar" /> + v-bind="showToast"/> diff --git a/src/platforms/h5/components/app/popup/mixins/toast.js b/src/platforms/h5/components/app/popup/mixins/toast.js index 4b193c60e..b27f9e4d2 100644 --- a/src/platforms/h5/components/app/popup/mixins/toast.js +++ b/src/platforms/h5/components/app/popup/mixins/toast.js @@ -8,14 +8,30 @@ export default { }, created () { UniServiceJSBridge.on('onShowToast', args => { - setTimeout(() => { // 延迟一下 show 可解决窗口打开前调用 showToast,showLoading 在 onHidePopup 之后触发 + setTimeout(() => { // 延迟一下 show 可解决窗口打开前调用 showToast 在 onHidePopup 之后触发 this.showToast = args }, 10) }) - UniServiceJSBridge.on(['onHidePopup', 'onHideToast'], args => { - setTimeout(() => { // 与 show 对应延迟10ms,避免快速调用 show,hide 导致无法关闭 - this.showToast.visible = false - }, 10) - }) + + const createOnHide = (type) => { + return () => { + let warnMsg = '' + if (type === 'onHideToast' && this.showToast.isShowLoading) { + warnMsg = '请注意 showToast 与 hideToast 必须配对使用' + } else if (type === 'onHideLoading' && !this.showToast.isShowLoading) { + warnMsg = '请注意 showLoading 与 hideLoading 必须配对使用' + } + if (warnMsg) { + return console.warn(warnMsg) + } + setTimeout(() => { // 与 show 对应延迟10ms,避免快速调用 show,hide 导致无法关闭 + this.showToast.visible = false + }, 10) + } + } + + UniServiceJSBridge.on('onHidePopup', createOnHide('onHidePopup')) + UniServiceJSBridge.on('onHideToast', createOnHide('onHideToast')) + UniServiceJSBridge.on('onHideLoading', createOnHide('onHideLoading')) } } -- GitLab