uni-app nvue页面点击事件加上stop修饰符无效报错 不加修饰符会触发事件冒泡

uni-app nvue页面点击事件加上stop修饰符无效报错 不加修饰符会触发事件冒泡

开发环境 版本号 项目创建方式
Windows 10.0.22631 HBuilderX
Android Android 14
小米
小米12

操作步骤:

见图片

预期结果:

正常阻止事件冒泡

实际结果:

没有效果,加上修饰符报错

bug描述:

nvue页面点击事件加上stop修饰符无效,报错,不加修饰符会触发事件冒泡
不加修饰符传递event参数
加修饰符并传递event参数
在问答社区看到不少关于这个问题的反馈依然还未解决


更多关于uni-app nvue页面点击事件加上stop修饰符无效报错 不加修饰符会触发事件冒泡的实战教程也可以访问 https://www.itying.com/category-93-b0.html

1 回复

更多关于uni-app nvue页面点击事件加上stop修饰符无效报错 不加修饰符会触发事件冒泡的实战教程也可以访问 https://www.itying.com/category-93-b0.html


uni-app 中使用 nvue 页面时,如果你在点击事件上使用 @tap.stop 修饰符,但发现它无效或报错,可能是因为 nvue 的事件处理机制与 vue 页面有所不同。

问题分析

  1. nvue 的事件机制nvue 是基于原生渲染的,其事件处理机制与 vue 页面不同。nvue 的事件处理是基于原生的事件系统,因此某些 vue 页面中的事件修饰符在 nvue 中可能不被支持或表现不同。

  2. stop 修饰符:在 vue 页面中,@click.stop@tap.stop 可以阻止事件冒泡。但在 nvue 中,stop 修饰符可能不被原生事件系统支持,导致无效或报错。

解决方案

  1. 手动阻止事件冒泡:如果 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>
    
  2. 使用 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>
回到顶部