现象描述
调用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>
欲了解更多更全技术文章,欢迎访问https://developer.huawei.com/consumer/cn/forum/?ha_source=zzh