vue3基础(五)watch(浅监听及深度监听),鼠标及键盘修饰符,v-model,对象写法,class使用数组,字符串模版,自定义组件标签上添加事件无效,使用data时用别名替代,solt输出内容

这篇具有很好参考价值的文章主要介绍了vue3基础(五)watch(浅监听及深度监听),鼠标及键盘修饰符,v-model,对象写法,class使用数组,字符串模版,自定义组件标签上添加事件无效,使用data时用别名替代,solt输出内容。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

监听器(watch)

监听中的 方法名需要监听的 变量名一致
如果没有(例如aa),不会报错,但监听不到
vue3 深度监听,前端,基础,h5,前端,vue.js,移动端,经验分享,其他
所以上图会输出1,而不会输出2

newValue改变后的值,oldValue改变前的值

vue3 深度监听,前端,基础,h5,前端,vue.js,移动端,经验分享,其他
watch可以监听computed计算属性中的方法,变量等等
vue3 深度监听,前端,基础,h5,前端,vue.js,移动端,经验分享,其他
点击go按钮,调用change方法修改kk的值,computed中有kk,所以kk改变,computed执行(computed看的是方法里的变量),返回kk的值,watch(看的是方法名,watch的方法名要与监听的变量名一致)监听到computedleo执行,输出leo
vue3 深度监听,前端,基础,h5,前端,vue.js,移动端,经验分享,其他

监听拓展

普通监听(浅监听),只能监听的到整个数组被替换(重新赋值,原来的销毁,变成新的)监听不到 数组内部发生改变(pushpop等)
可以监听:
vue3 深度监听,前端,基础,h5,前端,vue.js,移动端,经验分享,其他
不能监听:
vue3 深度监听,前端,基础,h5,前端,vue.js,移动端,经验分享,其他
解决方案:
深度监听,被监听的方法中添加handler
vue3 深度监听,前端,基础,h5,前端,vue.js,移动端,经验分享,其他
不只要加handler还需要加deep:true
vue3 深度监听,前端,基础,h5,前端,vue.js,移动端,经验分享,其他

immediate (中文立即的意思)立即执行
加上immediate:true,会初始化时就会自动执行一次
vue3 深度监听,前端,基础,h5,前端,vue.js,移动端,经验分享,其他
总结:
vue3 深度监听,前端,基础,h5,前端,vue.js,移动端,经验分享,其他

事件处理

vue3 深度监听,前端,基础,h5,前端,vue.js,移动端,经验分享,其他
$event写法是固定的指的是当前的事件,上图中指的是MouseEvent

获取这个事件对象 可以做很多事,比如拖拽等等

&event是作为参数传入的固定写法,想在第几个传入,第几个就写$event

vue3 深度监听,前端,基础,h5,前端,vue.js,移动端,经验分享,其他
总结:
vue3 深度监听,前端,基础,h5,前端,vue.js,移动端,经验分享,其他

事件 修饰符

阻止事件默认行为(.prevent):
vue3 深度监听,前端,基础,h5,前端,vue.js,移动端,经验分享,其他
@mousedown.prevent
后面不要加“事件名”,就是不要加=‘abc’,直接写@mousedown.prevent就行
加了事件 阻止不了那个事件
例如:
vue3 深度监听,前端,基础,h5,前端,vue.js,移动端,经验分享,其他
点击字符串,一样会执行abc事件中的alert(1),弹出1

事件冒泡

vue3 深度监听,前端,基础,h5,前端,vue.js,移动端,经验分享,其他
这么写会冒泡,点blue会从blue的弹窗一直弹到leo的
点sky会从sky弹到leo

.cupture谁先捕获到先执行哪个

所以点击blue,会先弹出leo,然后sky,最后是blue,冒泡效果还是会有,只不过执行顺序会相反

.passive不能和.prevent一起使用,会报错

vue3 深度监听,前端,基础,h5,前端,vue.js,移动端,经验分享,其他

@scroll后使用.passive会在移动端的效率会更高(以前或者比较差的手机或者浏览器),会过滤掉一些移动端没有用的多余的行为

@scoll.passive是vue对滚动的优化方案,设置为true时,表示 listener 永远不会调用 preventDefault()

如果事件冒泡,加上.once 还是会冒泡,只不过只会执行一次,再次点击无效

vue3 深度监听,前端,基础,h5,前端,vue.js,移动端,经验分享,其他

阻止事件冒泡(.self):

vue3 深度监听,前端,基础,h5,前端,vue.js,移动端,经验分享,其他

或者.stop

总结:
vue3 深度监听,前端,基础,h5,前端,vue.js,移动端,经验分享,其他

按键别名

.tab .enter等
vue3 深度监听,前端,基础,h5,前端,vue.js,移动端,经验分享,其他
键盘事件(必须是键盘事件) 之后直接用

总结:
vue3 深度监听,前端,基础,h5,前端,vue.js,移动端,经验分享,其他

系统修饰键

ctrl,alt,shift,meta
vue3 深度监听,前端,基础,h5,前端,vue.js,移动端,经验分享,其他
meta在windows上是系统键,在苹果电脑上是commond键

如果使用.crtl,按键中包含ctrl也能执行,比如同时按shift和ctrl

那怎么只按crtl 才执行,按多个不执行:
.exact
vue3 深度监听,前端,基础,h5,前端,vue.js,移动端,经验分享,其他

上图的写法就是,只按ctrl键执行abc方法

先按住ctrl在按住shift也不执行

这种写法只针对系统修饰键,比如按esc和ctrl一样会执行

vue3 深度监听,前端,基础,h5,前端,vue.js,移动端,经验分享,其他

鼠标事件修饰符

left,right,middle
left只能用在鼠标左键的事件上
如果left用在鼠标右键的事件上会不执行
所以right只能用在右键的事件上

例子:
@contextmenu.left
点击左键不执行
因为contentmenu是鼠标右键的事件
vue3 深度监听,前端,基础,h5,前端,vue.js,移动端,经验分享,其他

例子2
@click.right不会执行
因为click是鼠标左键的事件

例子3:
鼠标修饰符只能一个使用,不能一起使用不执行
不能.left.right这种写法

mousedown这类事件不用区分left和right,都能使用
contextmenu指的是右键菜单

总结:
vue3 深度监听,前端,基础,h5,前端,vue.js,移动端,经验分享,其他

表单输入绑定,双向绑定(v-modle)

vue3 深度监听,前端,基础,h5,前端,vue.js,移动端,经验分享,其他

双向绑定修饰符

.lazy
input上的v-modle后面用.lazy会把oninput事件降级on change事件

.number
inputv-modle后用.number,输入框里输入非数字的字符串,现实的时候会被自动过滤掉

可连用
可以.number.lazy连用

vue3 深度监听,前端,基础,h5,前端,vue.js,移动端,经验分享,其他

.trim删除前后空格

vue3 深度监听,前端,基础,h5,前端,vue.js,移动端,经验分享,其他

class与style绑定,对象语法

vue3 深度监听,前端,基础,h5,前端,vue.js,移动端,经验分享,其他
这种写法比{{变量}}要方便一些,否则还得在data中给变量再设一个值

class叠加的顺序,先写的在前面(写在前面的排在前面)
后写的aaa所以在网页中aaa也排在后面
vue3 深度监听,前端,基础,h5,前端,vue.js,移动端,经验分享,其他

对象写法是个json格式可以写多个class
class的个数不限
vue3 深度监听,前端,基础,h5,前端,vue.js,移动端,经验分享,其他

正常的json格式key是要加双引号“”
如果要写的规范一点可以加上
vue3 深度监听,前端,基础,h5,前端,vue.js,移动端,经验分享,其他
要书写规范的话,上图中的mmm和k也要和setRed一样加上“”
active的值为字符串,默认为true
active的值设为0,会默认为false
active的值设为空字符串“”,会默认为false

:class和:style

:class=‘变量名’
:style=‘变量名’

:style=‘对象’,也一样会转换成style的字符串格式执行
vue3 深度监听,前端,基础,h5,前端,vue.js,移动端,经验分享,其他
vue3 深度监听,前端,基础,h5,前端,vue.js,移动端,经验分享,其他

class与style绑定—数组语法

vue3 深度监听,前端,基础,h5,前端,vue.js,移动端,经验分享,其他
上方写法就是两个(多个)class的数组写法

数组中放入三元运算符:
vue3 深度监听,前端,基础,h5,前端,vue.js,移动端,经验分享,其他

class 数组里嵌套数组
vue3 深度监听,前端,基础,h5,前端,vue.js,移动端,经验分享,其他
vue3 深度监听,前端,基础,h5,前端,vue.js,移动端,经验分享,其他
结果:(class会把数组自动扁平化
vue3 深度监听,前端,基础,h5,前端,vue.js,移动端,经验分享,其他
vue3 深度监听,前端,基础,h5,前端,vue.js,移动端,经验分享,其他

字符串模版

换行\n

字符串模版中插入变量或者json对象中的某个属性
使用${}
vue3 深度监听,前端,基础,h5,前端,vue.js,移动端,经验分享,其他
a和b如果都是数字 所以用运算符拼接会自动计算
vue3 深度监听,前端,基础,h5,前端,vue.js,移动端,经验分享,其他

组件基础

vue3 深度监听,前端,基础,h5,前端,vue.js,移动端,经验分享,其他

从上图可以看出 调用的三个组件都是单独的(每个count显示的都不一样,每个调用的组件里都有一个data,data里都有一个count

配合计算属性一起使用
vue3 深度监听,前端,基础,h5,前端,vue.js,移动端,经验分享,其他

leo-aaa在执行的时候,会自动转化为<div>等html代码,所以直接在leo-aaa标签上添加点击事件等事件是无效的

props

vue3 深度监听,前端,基础,h5,前端,vue.js,移动端,经验分享,其他
msg in data,意思是在使用data的时候把data的名字改为msg,所以循环的时候msg.id其实是data中data数组中每个对象的id

在组件leo-aaa中接收,写为.component(“leo-aaa”,{props:

然后props接收

最后.mount挂载在#leo
vue3 深度监听,前端,基础,h5,前端,vue.js,移动端,经验分享,其他
总结:
vue3 深度监听,前端,基础,h5,前端,vue.js,移动端,经验分享,其他

slot等同于:

vue3 深度监听,前端,基础,h5,前端,vue.js,移动端,经验分享,其他
vue3 深度监听,前端,基础,h5,前端,vue.js,移动端,经验分享,其他
上下两张图中的代码其实是一样的,上图的slot标签等于会再加载一遍html里leo-aaa里的代码,而下图里则是直接写进组件里了

注意:
每写一个slot标签都会把组件leo-aaa中的内容输出一遍

总结:
vue3 深度监听,前端,基础,h5,前端,vue.js,移动端,经验分享,其他文章来源地址https://www.toymoban.com/news/detail-606723.html

到了这里,关于vue3基础(五)watch(浅监听及深度监听),鼠标及键盘修饰符,v-model,对象写法,class使用数组,字符串模版,自定义组件标签上添加事件无效,使用data时用别名替代,solt输出内容的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Vue3 watch 监听对象数组中对象的特定属性

    在 Vue 3 中,可以使用 watch 函数来监听对象数组中对象的特定属性。可以通过在回调函数中遍历数组来检查对象的特定属性是否发生变化,并在变化发生时执行相应的操作。 例如,假设有一个名为 items 的对象数组,其中每个对象都有一个名为 checked 的布尔属性和一个名为 n

    2023年04月20日
    浏览(31)
  • vue全家桶进阶之路32:Vue3 WatchEffect和watch 监听

    在 Vue 3 中, watchEffect 是一个用于监听响应式数据变化的 API。它可以在函数内部自动跟踪数据的依赖,并在依赖变化时重新运行函数。 watchEffect  的作用以及各个参数的功能讲解: watchEffect(effect: (onInvalidate: InvalidateCbRegistrator) = void | (() = void) | Promisevoid, options?: WatchEffectOptio

    2023年04月17日
    浏览(66)
  • Vue3.0 watch和watchEffect监听器:VCA

    在项目中,有时候检测一个变量的值是否反升了变化。通常使用的watch或者使用低效的循环判断。 在次vue中给我们设置了深度监测数据繁盛变化的方法。 1.vue中提供了在watch监听时设置deep:true 就可以实现对对象的深度监听; 2.immediate:true,代表watch里面声明了之后会立马执行han

    2024年02月06日
    浏览(35)
  • vue监听鼠标与键盘事件

     效果:  

    2024年02月16日
    浏览(26)
  • watch监听,解决Vue3父组件异步props传值,子组件接收不到的问题

    写静态数据的时候父组件传值子组件接收并渲染是没问题的,但当父组件异步获取数据,子组件接收数据会晚于渲染,就会产生接收不到的问题,我在用echarts绘制图表时图表就直接不显示  用watch监听props数据并在watch内进行赋值操作可解决该问题 直接上代码 父组件,vue3语法

    2024年02月15日
    浏览(36)
  • vue中使用watch监听同时监听两个数据

    使用场景,创建一个子组件,父组件会向子组件中穿递一个状态 - \\\"status\\\" ,子组件需要同时监听this.$route.params中的值和status,然后再去调方法,所以需要同时监听

    2024年02月11日
    浏览(32)
  • vue watch监听数据变化

    监听数据变化,在Vue中是通过侦听器来实现的,你也可以将它理解为监听器,时刻监听某个数据的变化 这一次我们要添加的是watch属性。下面我们先来眼熟一下侦听器的添加位置: 侦听器更多的是用在异步操作中,所谓异步操作就是数据返回有所延迟的操作,比如说我们要请

    2024年02月12日
    浏览(35)
  • vue watch监听多个数据

    项目驱动 在自己工作的某个项目中,之前基本都是使用watch监听单个数据。 但是后面在一个echarts的项目中,使用了三个echarts图表,而三个图表需要根据用户的选择条件同时更新,而后端传过来的数据我们需要分割成两个数组,这个时候,单独监听一个数组已经达不到项目需

    2024年02月15日
    浏览(28)
  • Vue2 Watch监听

    在Vue2中,我们可以使用watch来监听一个数据的变化,并且在数据变化时执行一些操作。这个特性是Vue2非常强大的一个功能,可以帮助我们监控一个或多个数据的变化,然后做出相应的反应。 要使用watch,我们需要在Vue组件的选项中声明一个watch对象,如下: watch对象的每个属

    2024年02月17日
    浏览(40)
  • python 监听键盘事件和鼠标事件

    键盘监听: python有一个很强大的键盘监听库,那就是 keyboard 。他的父类库 pynput 可以实现鼠标监听 可以自行下载 pip install keyboard | pip install pynput 代码参考

    2024年02月13日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包