onMounted第一次打开执行,
onActivated跳转到这个页面执行,
有一种情况,项目第一个打开,从别到页面跳转到这个页面时onMounted和onActivated会都执行,这时就会有一个问题,onMounted中的可能耗时长的会在onActivated执行时才执行完成,这时就出现了问题。这个问题怎么解决?
onActivated(async ()=>{ }) onMounted(async ()=>{ console.log('onMounted开始') await getPayType() await defaultDate() await getData() console.log("onMounted结束") })
解决方案:
那你就把 onMounted 里的逻辑抽出来变成一个 Promise 就好了。
let p; onMounted(() => { p = new Promise(async (resolve, reject) => { try { await getPayType(); await defaultDate(); await getData(); resolve(); } catch (err) { reject(err); } }); }) onActivated(() => { p.then(async () => { // do something after `p` is completed }); })