vue3学习 3.递归监听和非递归监听

1.递归监听
	1.递归监听
		默认情况下,无论是通过ref还是reactive都是递归监听 递归监听是vue将对象包装成Proxy对象 里面的所有数据都能深度监听
	2.递归监听存在的问题
		如果数据量比较大,非常消耗性能
	3.非递归监听
		注意点: 如果是通过shallowRef创建的数据,
		那么vue监听的是.value的变化 并不是第一层的变化.所以如果使用的是shallowRef的话 数据都不会有Proxy对象转化
	4.应用场景
		一般情况下我们是用ref和reactive即可
		只有在需要监听的数据量比较大的时候,我们才是用shallowRef/shallowReactive

在这里插入图片描述

递归监听如下图:
这里看到第一层的数据能深度监听 所以页面渲染了 所以下面的1234都改变了 如果把第一层的a注释掉 则下面的数据即使修改了 但是页面不会渲染.
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
非递归监听:shallowReactive 和 shallowRef
在这里插入图片描述
在这里插入图片描述

triggerRef方法 主动更新页面重新渲染 和vue2的this.$forceUpdate()类似
注意点:
	vue3中只提供了triggerRef方法,没有提供triggerReactive的方法
	所以没如果是reactive类型的数据,那么无法主动触发页面更新
shallowRef本质
ref -> 本质就是reactive
ref(10) -> 包装reactive({value:10})
shallowRef -> 本质也是shallowReactive
shallowRef(10) -> shallowReactive({value:10})
所以如果是通过shallowRef创建的数据,他监听的是.value的变化
因为底层本质上value才是第一层.

在这里插入图片描述

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值