iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >VueJs中的shallowRef与shallowReactive函数使用比较
  • 102
分享到

VueJs中的shallowRef与shallowReactive函数使用比较

摘要

目录前言shallowRefshallowReactive总结前言 在vue3当中一些相似的组合式api,如果没有经常使用,就会混淆,对于初学者,很是迷惑,比如:shallowRe

前言

vue3当中一些相似的组合式api,如果没有经常使用,就会混淆,对于初学者,很是迷惑,比如:shallowRefshallowReactive

shallowRef

如果传入基本数据类型,那么shallowRefref的作用基本没有什么区别,也就是浅层的ref的内部值将会原样的存储和暴露,并不会被深层递归地转为响应式

但如果是对象的话,那么就存在区别了的,shallowRef不处理对象类型的数据

其实,它就是只处理基本数据类型的响应式,不进行对象的响应式处理

性能优化,应用场景:如果有一个对象数据,后续功能不会修改该对象中的属性,而是生的对象来替换,那么就可以用shallowRef

shallowRef() 常常用于对大型数据结构的性能优化或是与外部的状态管理系统集成

const state = shallowRef({ count: 1 })
// 不会触发更改
state.value.count = 2
// 会触发更改
state.value = { count: 2 }

shallowReactive

浅层作用的响应式数据处理,也就是只处理第一层对象的数据,在往下嵌套的数据,操作数据是不起作用的

只考虑对象第一层的数据响应式,在第一层嵌套下的数据不考虑

reactive()不同,没有深层及的转换,一个浅层响应式对象里只有根级别的属性是响应式的,属性的值会被原样存储和暴露,这意味着值为ref的属性不会被自动解构的

性能优化:具体应用场景:

如果有一个对象数据,数据结构比较深,复杂,但变化时只需要外层属性变化,那么就可以使用shallowReactive,如下示例代码所示

const state = shallowReactive({
  foo: 1,
  nested: {
    bar: 2
  }
})
// 更改状态自身的属性是响应式的
state.foo++
// ...但下层嵌套对象不会被转为响应式
isReactive(state.nested) // false
// 不是响应式的
state.nested.bar++

总结

shallowReativeshallowRef在某些特殊的应用场景下,是可以提升性能的,前者针对对象,用于浅层作用的响应式数据处理,而后者只处理基本数据类型的响应式,不进行对象的响应式处理

以上就是Vuejs中的shallowRef与shallowReactive的使用比较的详细内容,更多关于Vue shallowRef shallowReactive的资料请关注编程网其它相关文章!

--结束END--

本文标题: VueJs中的shallowRef与shallowReactive函数使用比较

本文链接: https://www.lsjlt.com/news/203087.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作