前端的成长-学习Vue3-计算属性与监视【第四弹】

一. 计算属性(computed)

1. 计算属性的基本语法

1.<script lang="ts">
import { defineComponent, computed } from 'vue'
export default defineComponent({
	name:'App',
	setup(){
		const user = reactive({
	      firstName: 'A',
	      lastName: 'B'
	    })
	    const fullName1 = computed(() => {
	      return user.firstName + '-' + user.lastName
	    })
	    return {
	    	user,
	    	fullName1
	    }
	}
})
</script>
2.<script lang="ts">
import { defineComponent, computed } from 'vue'
export default defineComponent({
	name:'App',
	setup(){
		const user = reactive({
	      firstName: 'A',
	      lastName: 'B'
	    })
	    const fullName2 = computed({
	    	get(){
	    		return user.firstName + '-' + user.lastName
	    	},
	    	set(value:string){
	    		const names = value.split('-')
	    		user.firstName = names[0]
	    		user.lastName = names[1]
	    	}
	    })
	    return {
	    	user,
	    	fullName2
	    }
	}
})
</script>

2. 计算属性的解析

  • 如果1. 中,computed属性的函数中只传入一个回调函数,表示的是getter 函数,返回的是一个Ref类型的对象
  • 如果2. 中,computed属性的函数中传入一个对象,表示的是getter和setter 函数。

一. 监视属性(watch)

1. 监视属性的基本语法

1.<script lang="ts">
import { defineComponent, ref,watch } from 'vue'
export default defineComponent({
	name:'App',
	setup(){
		const user = reactive({
	      firstName: 'A',
	      lastName: 'B'
	    })
	    const fullName3 = ref('')
	    watch(user,({firstName,lastName})=> {
	    	fullName3.value = firstName + '-' + lastName
	    },{immediate:true,deep:true}),
	    return {
	    	user,
	    	fullName3
	    }
	}
})
</script>
2.<script lang="ts">
import { defineComponent, ref,watchEffect } from 'vue'
export default defineComponent({
	name:'App',
	setup(){
		const user = reactive({
	      firstName: 'A',
	      lastName: 'B'
	    })
	    const fullName3 = ref('')
	    watchEffect(() => {
	      console.log('watchEffect')
	      fullName3.value = user.firstName + '-' + user.lastName
	    }) 
	    return {
	    	user,
	    	fullName3
	    }
	}
})
</script>
3.<script lang="ts">
import { defineComponent, ref,watch } from 'vue'
export default defineComponent({
	name:'App',
	setup(){
		const user = reactive({
	      firstName: 'A',
	      lastName: 'B'
	    })
	    const fullName3 = ref('')
	    watch([() => user.firstName, () => user.lastName, fullName3], (values) =>	{
     		console.log('监视多个数据', values)
    	}),
	    return {
	    	user,
	    	fullName3
	    }
	}
})
</script>

2. 监视属性的解析

  • 如果1. 中,watch的函数中,第一个参数(user)为监视的对象;第二个接收的是一个回调函数,解构监视对象中的数据;第三个参数接收的是一个对象,里边包含:immediate的作用是默认执行一次。deep的作用是深度监视。
  • 如果2. 中,watchEffect的函数中,也是监视属性并监视所有回调中使用的数据。注意不需要配置immediate,默认会执行一次。
  • 如果3. 中,watch函数可以监视多个数据。使用数组来指定监视的数据。
    注意:
    如果是ref对象, 直接指定;如果是reactive对象中的属性, 必须通过函数 来指定。
    如果是响应式数据, 直接指定;如果是非响应式的数据, 必须通过函数来指定。

The end…

如果您认真阅读至此,您现在已经掌握了基本的知识啦 ,为接下来我们学习Vue3更加有信心!!。
如果喜欢这个帖子,请不要忘记点赞,留言,评论。我们一起在前端小白中进步

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值