Vue3 中 reactive 函数能否使基础数据类型变得响应式?

Vue3 中 reactive 函数能否使基础数据类型变得响应式?

vue3 reactive 是否能接收基础数据类型并使其响应式

在讨论这个问题之前,我们首先需要了解 reactive 的本质。reactive 是 vue3 中用来创建响应式对象的函数。它接收一个对象作为参数,并返回一个响应式代理。这意味着,任何对该对象的修改都会触发界面视图的更新。

那么,问题来了,reactive 能否接收基础数据类型并使其响应式呢?答案是不行。vue/reactivity 的源码表明,reactive 代理对象来实现响应式,而不是基础数据类型。

demo 中之所以发生了响应式变化,是因为引入了 msgRef,它是一个响应式对象。在 vue3 中,依赖收集是以组件为单位的。所以,render 会收集对 msgRef 的依赖。当 msgRef 更新后,渲染函数会重新运行。由于使用了 diff 算法,恰好更新了 msgReactive。也就是说,msgReactive 的响应式是间接实现的,是由 msgRef 带动的。

© 版权声明
THE END
喜欢就支持一下吧
点赞10 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容