uni-app nvue页面点击事件加上stop修饰符无效报错 不加修饰符会触发事件冒泡
uni-app nvue页面点击事件加上stop修饰符无效报错 不加修饰符会触发事件冒泡
| 开发环境 | 版本号 | 项目创建方式 |
|---|---|---|
| Windows | 10.0.22631 | HBuilderX |
| Android | Android 14 | |
| 小米 | ||
| 小米12 |
操作步骤:
见图片
预期结果:
正常阻止事件冒泡
实际结果:
没有效果,加上修饰符报错
bug描述:
nvue页面点击事件加上stop修饰符无效,报错,不加修饰符会触发事件冒泡


在问答社区看到不少关于这个问题的反馈依然还未解决
更多关于uni-app nvue页面点击事件加上stop修饰符无效报错 不加修饰符会触发事件冒泡的实战教程也可以访问 https://www.itying.com/category-93-b0.html
更多关于uni-app nvue页面点击事件加上stop修饰符无效报错 不加修饰符会触发事件冒泡的实战教程也可以访问 https://www.itying.com/category-93-b0.html
在 uni-app 中使用 nvue 页面时,如果你在点击事件上使用 @tap.stop 修饰符,但发现它无效或报错,可能是因为 nvue 的事件处理机制与 vue 页面有所不同。
问题分析
-
nvue的事件机制:nvue是基于原生渲染的,其事件处理机制与vue页面不同。nvue的事件处理是基于原生的事件系统,因此某些vue页面中的事件修饰符在nvue中可能不被支持或表现不同。 -
stop修饰符:在vue页面中,@click.stop或@tap.stop可以阻止事件冒泡。但在nvue中,stop修饰符可能不被原生事件系统支持,导致无效或报错。
解决方案
-
手动阻止事件冒泡:如果
stop修饰符无效,可以尝试在事件处理函数中手动调用event.stopPropagation()来阻止事件冒泡。<template> <view @tap="handleTap"> <text>Click me</text> </view> </template> <script> export default { methods: { handleTap(event) { event.stopPropagation(); // 手动阻止事件冒泡 console.log('Tap event triggered'); } } } </script> -
使用
catch事件:在nvue中,你可以使用catch事件来捕获事件并阻止其冒泡。catch事件在nvue中是原生支持的。<template> <view @tap="handleTap" catchtap="handleCatchTap"> <text>Click me</text> </view> </template> <script> export default { methods: { handleTap() { console.log('Tap event triggered'); }, handleCatchTap() { console.log('Catch tap event, stop propagation'); } } } </script>

