问题
在写代码时我注意到click事件的native修饰符,如下:
<el-dropdown-item divided @click.native="logout"><span style="display:block;">退出登录</span></el-dropdown-item>
请问这里的native是什么,有什么用?对于自定义的组件,如果添加@click而不加.native,我们点击这个组件,logout会执行吗?带着以上问题我们接着往下看。
经过测试我们发现当在父组件中给自定义组件添加@click而不加.native修饰时,点击不会被触发。这是因为自定义事件内部并没有$emit这个click事件。而对于内置dom元素(例如div, button,p,.......) vue会自动绑定系统事件(click, mouseenter,.....)。所以对于普通的自定义的组件我们要自己处理。
.native修饰符的作用
.native事件修饰符是用来是在父组件中给子组件(自定义组件)绑定一个原生的事件,就将子组件变成了普通的HTML标签看待。解决上边的问题,可以在监听原生事件的同时,设置一个.native修饰符,这样就可以正常监听了
总结
并不是所有的自定义的组件都天然能添加@click监听,如果监听不了,再补充一个.native.
感谢观看,留个三连再走吧^^