vue3基本介绍

数据侦听watch

1.在vue3中,watch强制深度侦听了,无法通过参数配置修改
2.只能侦听ref定义的简单数据,或者reactive定义的对象或数组,例如:对象.属性,无法侦听,但是可以通过函数返回值的形式进行侦听,如下情况四
3.通过函数返回值侦听时,如果对象的属性也是一个对象时,此时对象的属性不具备强制deep为true的特性,需要手动加上{deep: true}进行深度侦听

setup() {
	let num = ref(0);
	let sex = ref('男');
	let people = reactive({
		name: 'xxx',
		age: '18',
	});
	
	return {
		people,
		num,
	}
}

情况一: 侦听ref定义的简单数据

watch(num, (newValue, oldValue) => {
	console.log(newValue, oldValue);
}, {immediate: true, deep: true});

情况二: 侦听对象

watch(people, (newValue, oldValue) => {
	// newValue与oldValue的值一样,vue3的bug
	console.log(newValue, oldValue);
}, {immediate: true});

情况三:侦听reactive定义的对象中的某个属性

// 错误: people.name改变不会触发回调
watch(people.name, (newValue, oldValue) => {
	// newValue与oldValue的值一样,vue3的bug
	console.log(newValue, oldValue);
}, {immediate: true});

// 正确方式
watch(() => people.name, (newValue, oldValue) => {
	// newValue与oldValue的值一样,vue3的bug
	console.log(newValue, oldValue);
}, {immediate: true});

情况四: 侦听数组,数组中有一个数据发生变化,就会触发侦听回调

// 侦听ref定义的多个响应式数据
watch([num, sex], (newValue, oldValue) => {
	console.log(newValue, oldValue);
}, {immediate: true});

// 侦听reactive定义的对象中的多个属性
watch([() => people.name, () => people.age], (newValue, oldValue) => {
	console.log(newValue, oldValue);
}, {immediate: true});

watchEffect函数

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值