当前位置: 首页 > Web前端 > vue.js

Vue3个人心得---功能详解(二)写在前面的V-on

时间:2023-03-31 16:41:30 vue.js

:个人在vue学习中的理解和体会,使用速记,不懂勿怪!!监听事件V-oninlineV-on的写法:直接在标签中指令的值中写方法,如Add方法V-on的写法method:把方法写在逻辑部分,标签中指令的值只是方法名,比如Add特殊对象事件参数传递问题:没有括号在v-on中,会传递一个值给声明函数默认的实参(事件对象"event"),带括号的会传递一个默认的实参(undefined)给声明函数,如果要传递事件实参括号中的参数,需要在前面加$号,如:@click="xxx($event)"是关于冒泡捕获子父事件同步:子事件会同步触发父事件name,比如点击child,它的parent也会被点击,称为child-parentevent同步化。冒泡与捕获:子父事件同步,是先父还是先子?第一个儿子叫冒泡,第一个父亲叫擒。冒泡和捕获不是解决是否会发生事件同步的问题,而是解决事件同步的顺序问题。capture冒泡捕获:默认是冒泡排序。要使元素按捕获排序,您需要在事件名称后添加事件修饰符。排,然后按冒泡排。如下:默认是冒泡,先儿子后父亲,执行结果为:我四>我三>我二>我我是一个为parent添加@click.capture成为捕获,先父后子,执行结果为:我一>我二>我三>我四。气泡捕获混合,将捕获添加到1和3中,先捕获再起飞,执行结果为:我是1>我是3>我是4>我是2。stop阻止了parent的child-parent事件的同步:添加事件修饰符.stop以防止冒泡父级的子级-父级事件同步。只阻止冒泡的父级而不是捕获的父级。如果一个是捕获,另一个是冒泡,给三加stop,点三四,二就不会了。执行结果是:我一>我四>我三。self阻止自接收子的子-父事件同步:添加事件修饰符.self可以阻止自接收子的子-父事件同步。不接收父子事件同步而是接收自己的子父同步,比如把自己加到三,点击四,自己不会发生,执行结果是:我一>我二>我四,点击三,自己发生,执行结果为:我一>我二>我三。stop和self的区别:stop阻止parent,self阻止自己;stop的原因是parent是冒泡属性,self的原因是child发起的事件。事件修饰符native自定义标签验证器:在普通标签中,加这个字符来阻止事件,在自定义标签中,不加这个字符来阻止事件(vue3这个字符已经取消)prevent阻止默认事件:有些事件不写js代码就会发生这种情况,比如表单中包含的超链接\右键弹出菜单\from按钮标签的自动跳转或者类型??为submit的input都会给出一个事件。prevent将阻止默认事件的发生。被动默认事件立即执行:当同时有js代码事件和默认事件时,通常先执行js代码事件,再执行默认事件。如果代码事件耗时过长,默认事件会执行卡死的感觉,passive会减少卡死(滚动事件中常用)onceitselfonlyexecuteonce:itonlyexecuteitselfonce,执行完之后触发自己不再执行,但是parent还是会同步child和parent的事件,比如child的执行因为冒泡一旦被触发,就不再执行了。鼠标键修饰符:.left/.right/.middle(在keyup\keydown\keypress等键盘事件中,.left/.right/表示不是鼠标而是上下键)系统键修饰符:.ctrl/.alt/.shift/.meta会在非键盘事件时系统按键被按下时触发。其他键,再松开其他键才有效)。执行多个修饰符:如:当有多个语句时,第一个会先执行,例如:@click.prevent.self阻止了首先执行的默认操作。当点击child时,self虽然可以防止自己被child触发,但是因为prevent在前,prevent已经让child自己prevent了,所以sub也屏蔽了default行。如果是@click.self.prevent,第一个self防止自己被child触发。当点击child时,selfprevent自己不会被触发,后面的prevent自然不会执行,child也就没有parent可以继承了。所以sub没有能力阻止默认行为。空事件(没有方法的事件):》例如:没有处理方法的点击事件是没有意义的,但这是因为没有修饰符。有些修饰符也可以让空事件变得有意义,比如click.stop,会阻止事件传递给parent,点击自己,parent的click事件的方法不会发生,如果没有click.stop,因为你在parent中,clickon自己也点击parent,就会发生parent的click事件,如果在label中放置一个空事件@click.self.prevent,可以让click本身不跳转,而是点击child跳转。别的想不出来了,有需要再想想。键盘事件修饰符也称为键修饰符。它们用于键盘事件,例如keyup\keydown\keypress。所有键名都可以用作修饰符。vue2中可以通过键码表查询到按键的数字键码,数字键码作为修饰符。vue3中的数字键代码被弃用,键名可以通过以下方法查询: