本文小编为大家详细介绍“Vue3setup的注意点及watch的监视属性有哪些”,内容详细,步骤清晰,细节处理妥当,希望这篇“Vue3setup的注意点及watch的监视属性有哪些”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。
一,setup须知
1.1setup的执行时间
1.setup的执行时间要比beforCreate执行要早
exportdefault{name:\"Demo\",beforeCreate(){console.log(\'beforeCreate已执行\');},setup(){console.log(\'setup已执行\');letperson=reactive({name:\"小明\",age:20,});return{person,};},};
1.2.steup参数
setup的参数
1.props: 值为对象,包含: 组件外部传递过来,且组件内部声明接收了的属性
2.context:上下文对象
①attrs:值为对象,包含: 组件外部传递过来,但没有在props配置中声明的属性,相当于
this.$attrs
exportdefault{name:\"Demo\",props:[\'msg\',\'age\'],setup(props){console.log(props);letperson=reactive({name:\"小明\",age:20,});return{person,};},};
②slots: 收到的插槽内容,相当于
this.$slots
。
在App中定义插槽
123321
在子组件中获取到插槽
console.log(context.slots);//得到插槽
③emit: 分发自定义事件的函数,相当于
this.$emit
。
在App中写一个自定义事件并且传给组件
setup(){functionHello(){console.log(\'你好!\');}return{Hello}}
然后去到子组件使用context.comit获取到自定义事件
functionpoint(){context.emit(\'hi\',666)}5TgxPT2v-1681788304084)]```jsfunctionpoint(){context.emit(\'hi\',666)}
与Vue2中的computed配置功能一致
import{reactive,computed}from\"vue\";exportdefault{name:\"Demo\",setup(){letperson=reactive({firstName:\"小\",lastName:\"明\",});//计算属性的简写形式,不考虑修改,是只读的/*person.fullName=computed(()=>{returnperson.firstName+\'-\'+person.lastName})*///计算属性的完整形式(可以读改)person.fullName=computed({get(){returnperson.firstName+\'-\'+person.lastName},set(value){constarr=value.split(\'-\')person.firstName=arr[0]person.lastName=arr[1]}})return{person,};},};
二,watch监视属性
有两种watch,分别是单个属性数据监视,和多个属性数据监视
watch中的三个参数分别为,监视的对象,监视的函数,监视属性的配置
监视ref所定义的数据
①监视属性监视ref的一个响应式的值
watch(sum,(newvalue,oldvalue)=>{console.log(\'当前值为\'+newvalue,\'以前值为\'+oldvalue);});
②监视ref所定义的多个响应式数据
watch([sum,msg],(newvalue,oldvalue)=>{console.log(\'当前值为\'+newvalue,\'以前值为\'+oldvalue);});
监视reactive所定义的数据
①监视reactive定义的数据的变化
使用reactive定义的数据无法使用watch正确的获取newValue
并且会强制开启深度监视
watch(person,(newValue,oldValue)=>{console.log(\'person变化了\',newValue,oldValue)})
②监视reactive所定义的响应式数据的某个属性
watch(()=>person.name,(newValue,oldValue)=>{console.log(\'person.name发生了变化\',newValue,oldValue)})
③监视reactive所定义的响应式数据的某些属性
watch([()=>{person.age},()=>{person.name}],(newValue,oldValue)=>{console.log(\'person.name发生了变化\',newValue,oldValue)})
④特殊形况
注:该情况监视的是recative所定义的对象中的某个属性,所以deep可以开启
watch(()=>person.job,(newValue,oldValue)=>{console.log(\'person.name发生了变化\',newValue,oldValue)},{deep:true})
读到这里,这篇“Vue活动:慈云数据爆款香港服务器,CTG+CN2高速带宽、快速稳定、平均延迟10+ms 速度快,免备案,每月仅需19元!! 点击查看3setup的注意点及watch的监视属性有哪些”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注服务器测评网行业资讯频道。
还没有评论,来说两句吧...