nativescript - NativeView 在返回应用后捕获 Exception: TypeError
问题描述
我的Component_1中有一个函数:
methods: {
interactBoxToggel () {
let page = this.$refs.Home.nativeView;
let interactBox = page.getViewById( 'interactBox' );
console.log( interactBox );
}
} ,
mounted () {
bus.$on( 'interactBoxToggel' , this.interactBoxToggel )
}
如果它从Component_1内部触发,它总是有效的,
现在我将它移植到Component_2:
methods: {
buttonCotrol( buttonName ) {
bus.$emit( 'interactBoxToggel' );
console.log(buttonName);
}
}
它也可以,但是如果我通过“滑动关闭”(Android 9 Fullscreen Gesture)退出应用程序并再次返回应用程序并从Component_2内部调用它,我会收到错误消息:
System.err: An uncaught Exception occurred on "main" thread.
System.err: Calling js method onTouch failed
System.err: TypeError: Cannot read property 'nativeView' of undefined
System.err:
...
为什么会发生这种情况?我该如何解决?
解决方案
您每次都在mounted
回调时添加事件侦听器。当应用程序关闭时,组件将被销毁并在恢复时再次挂载,因此您将有 2 个活动侦听器,但只有一个对会话有效。您关闭和打开多少次,您将添加多少个听众。
当监听器被销毁时,您必须移除它。
destroyed() {
bus.$off("interactBoxToggel", this.interactBoxToggel);
}
推荐阅读
- java - 如何在无头 ChromeDriver 中获取屏幕截图?
- php - MySQL级联删除自引用父子表?
- javascript - 是否可以在状态中保存一个反应组件列表并渲染它们?
- ruby - 我无法在 ruby 中获得第 15 个工作日
- java - How can I access the text of the SMS sent thru Twilio to my Spring Boot Controller?
- godot - Godot - 父母可以与其孩子共享 CollisionShape 吗?
- html - 如何制作圆形边框角(不是圆角)
- python - 如何在任何 JIRA 上添加仅限团队成员的评论
- arduino-esp8266 - 将 Aurdiuno ESP-01 wifi 与 LED 矩阵 MAX7219 连接
- json - 如何在按钮 id 中传递一个变量,然后将该 id 发送到 ajax 数据?