返回顶部
首页 > 资讯 > 前端开发 > JavaScript >vue3中reactive不能直接赋值的解决方案
  • 924
分享到

vue3中reactive不能直接赋值的解决方案

2024-04-02 19:04:59 924人浏览 薄情痞子
摘要

目录vue3 Reactive不能直接赋值方法Vue3 reactive赋值不响应(1)多嵌套一层(2)使用ref(3)用obeject.assignvue3 reactive不能直

vue3 reactive不能直接赋值

最近比较忙,都没什么时间学习了。

在vue3里,ref和reacitve都可以定义响应式数据,但是两者有所不同。在使用reactive定义复杂结构的响应式数据时,如果你要对其赋值,会丢失其响应性。然后赋值是我们经常进行的操作,那么该怎么解决呢?

方法

1. 改为ref定义

const arr= ref([])
arr.value = [1, 2, 3]

2. push新增数据

const arr = reactive([])
arr.push(...[1, 2, 3])

3.再封装一层数据(推荐!)

const state = reactive({
  arr: []
});
state.arr = [1, 2, 3]

但是这样的话在html模板里,使用数据就得state.arr

所以我们可以用解构将它return出来

但是reactive解构出来的数据会丢失响应性

所以再用torefs()方法为它们添加响应性

最终为:

const state = reactive({
  arr: []
});
state.arr = [1, 2, 3]
return{
  ...toRefs(state),
}

vue3 reactive赋值不响应

看了好多方法,先都存着。

(1)多嵌套一层

setup(props) {
    //a赋值的时候多套一层对象值赋到a的属性a上
  let a=reactive({a:{id:1,name:'小明'}})
  
  Object
  function fn(){
  //改值时就可以直接给a.a赋值了
    a.a={id:2,name:'小黄'}
    console.log(a);
   
  }
  return {
    fn,a
  }
}

(2)使用ref

const data= ref([]) 
data.value = [1, 2, 3]

(3)用obeject.assign

 let a=reactive({id:1,name:'小明'})
  
   function fn(){
  Object.assign(a,{id:2,name:'大明'})
   }

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。 

--结束END--

本文标题: vue3中reactive不能直接赋值的解决方案

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

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

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

  • 微信公众号

  • 商务合作