HarmonyOS鸿蒙Next中【快应用】为什么调用router.clear()后,立即调用router.getLength()发现页面并未销毁
HarmonyOS鸿蒙Next中【快应用】为什么调用router.clear()后,立即调用router.getLength()发现页面并未销毁
现象描述
调用router.clear()后,立即调用router.getLength()发现页面并未销毁。
实现方式
调用router.clear()后,页面销毁需要一定的时间,建议使用setTimeout延迟1s后再调用router.getLength(),这样就可以获取最新的页面栈数量。
代码如下:
<script>
import router from '@system.router';
export default {
data: {
photoUri: '/Common/logo.png',
taskflag: '',
___PARAM_LAUNCH_FLAG___: '',
length: '',
pages: {},
pageFrom: ''
},
onInit() {
this.$page.setTitleBar({ text: 'deepLink' })
var that = this;
that.taskflag = this.___PARAM_LAUNCH_FLAG___;
// 调用getPages方法
let pages = router.getPages()
// 由于获得的值是一个JSON数组,所以直接打印是打印不出来的,可以使用下面的方法来打印
console.log("tag", this.printJSONArray(router.getPages()));
that.pages = this.printJSONArray(router.getPages());
that.length = router.getLength();
console.log("pages' length = " + that.length);
},
printJSONArray(array) {
let result = ""
const suffix = ", "
Array.isArray(array) && array.forEach((element, index) => {
result = result + JSON.stringify(element) + (index === array.length - 1 ? "" : ", ")
})
return result
},
clear: function () {
router.clear()
setTimeout(() => {
var that = this;
// 调用getPages方法
let pages = router.getPages()
// 由于获得的值是一个JSON数组,所以直接打印是打印不出来的,可以使用下面的方法来打印
console.log("tag", this.printJSONArray(router.getPages()));
that.pages = this.printJSONArray(router.getPages());
that.length = router.getLength();
console.log("pages' length = " + that.length);
}, 1000);
}
</script>
更多关于HarmonyOS鸿蒙Next中【快应用】为什么调用router.clear()后,立即调用router.getLength()发现页面并未销毁的实战教程也可以访问 https://www.itying.com/category-93-b0.html
更多关于HarmonyOS鸿蒙Next中【快应用】为什么调用router.clear()后,立即调用router.getLength()发现页面并未销毁的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS鸿蒙Next中,router.clear()
用于清除当前页面栈中的所有页面,但该操作是异步的。调用router.clear()
后,页面栈的清理操作可能尚未完成,因此立即调用router.getLength()
可能返回未更新的页面栈长度。建议在router.clear()
后使用回调或延迟执行router.getLength()
,以确保获取到正确的页面栈长度。