1、在vue中,对组件事件的监听处理要使用native来修饰,比如
<Child @click.native="onClick()" ></Child>
console.log('父');
不然在调用组件的vue中click是无法触发的。
2、父子组件的点击事件的触发顺序:先子后父
比如:父组件中调用
<Child @click.native="onClick()" ></Child>
子组件中再次定义点击事件
<div id="child" @click.stop="onClick()">
console.log('子');
这样当点击的时候,控制台输出:
但是使用修饰符capture可以修改这个逻辑,顾名思义capture捕获的意思,官方原话:
内部元素触发的事件先在此处理,然后才交由内部元素进行处理
也就是说会先在父层进行响应,然后在传递到子组件,如果你再结合stop,子组件也就无法触发了
<Child @click.native.capture="onClick()" ></Child>
当我们后面加上capture修饰符之后,再看结果:
3、passive修饰符,跟prevent相反,passive的意思是不拦截默认事件
不写prevent不就行了吗,为什么还要专门写个passive呢?
要知道浏览器的内核线程在执行js的时候,只有执行到相应代码的监听时才会执行相应的处理,查看有没有preventDefault阻止默认行为,这样在用户滑动的时候效率会很低,加上passive之后效率就会提高,就相当于告诉线程,你不用找了,我的程序没有阻止默认行为,你放心大胆的执行吧!
因为passive和prevent是两个完全相反的意义,所以不可以一起使用,硬要放一起,prevent就不会起作用了,也就是passive执行等级更高
经常记不住,写一遍,加深下印象!!!!