登录
首页 >  文章 >  前端

为什么 Vue3 中使用 reactive 创建基础数据类型变量不会响应式?

时间:2024-11-07 19:46:00 384浏览 收藏

你在学习文章相关的知识吗?本文《为什么 Vue3 中使用 reactive 创建基础数据类型变量不会响应式? 》,主要介绍的内容就涉及到,如果你想提升自己的开发能力,就不要错过这篇文章,大家要知道编程理论基础和实战操作都是不可或缺的哦!

为什么 Vue3 中使用 reactive 创建基础数据类型变量不会响应式?

Vue3 中 reactive 接收基础数据类型不会响应式

在 Vue3 中,使用 reactive 创建响应式变量时,如果传入的是基础数据类型(如数字、字符串),尽管控制台会提示警告“value cannot be made reactive”,但界面的显示仍然会随着时间的推移而改变。这个问题让人感到困惑,尤其是在我们没有同时使用 ref 创建响应式对象时。

其实,reactive 本质上只支持代理对象。尽管我们传入的是基础数据类型,reactive 会自动创建一个封装它的对象。但是,这个对象并不是真正的响应式对象。真正的响应式对象需要使用 ref 创建。

当我们同时使用 ref 定义的变量时,reactive 创建的变量也会响应式更新。这是因为 ref 创建的变量是一个响应式对象,vue3 的依赖收集是以组件为单位的。因此,render 函数会收集对 msgRef 的依赖。当 msgRef 更新后,会触发更新依赖,导致 render 函数重新执行。基于 diff 算法,它会找出需要更新的部分。此时,msgReactive 只是恰好也更新了,而已搭上了 msgRef 的顺风车。

到这里,我们也就讲完了《为什么 Vue3 中使用 reactive 创建基础数据类型变量不会响应式? 》的内容了。个人认为,基础知识的学习和巩固,是为了更好的将其运用到项目中,欢迎关注golang学习网公众号,带你了解更多关于的知识点!

相关阅读
更多>
最新阅读
更多>
课程推荐
更多>