前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >vue3中如何使用ref和reactive定义和修改响应式数据?

vue3中如何使用ref和reactive定义和修改响应式数据?

原创
作者头像
国服第二切图仔
发布2024-07-04 09:08:03
5690
发布2024-07-04 09:08:03
举报
文章被收录于专栏:js前端编程工具

需求:vue3中setup组合式api中如何定义响应式数据并且修改赋值呢?

1、字符串/数字:“ref”是vue3中用来存储值的响应式数据源,它可以定义字符串,数字等

代码语言:javascript
复制
<script setup>
import { ref } from 'vue'
// “ref”是用来存储值的响应式数据源。
// 理论上我们在展示该字符串的时候不需要将其包装在 ref() 中,
const message = ref('Hello World!')
// 但是在这个示例中更改这个值的时候,就可以实现数据和页面响应式绑定了。
function changeMsg(data){
    //message=data   这种是不行的,无法实现双向绑定
    message.value=data
}
</script>
<template>
  <h1>{{ message }}</h1>
<button @click="changeMsg('数据修改')">Reverse Message</button>
</template>

2、数组/对象:引入 reactive 用来定义对象数据包括数组和对象

vue3使用proxy,对于对象和数组都不能直接整个赋值

代码语言:javascript
复制
<script setup>
import { reactive} from 'vue'
const arr = reactive([]);
const arr2=reactive({arr:[]});
const load = () => {
  const res = [2, 3, 4, 5]; //假设请求接口返回的数据
  //方法1 失败,直接赋值丢失了响应性
     arr = res;
  // 方法2 这样也是失败
     arr.concat(res);
  // 方法3 成功 插入数据,修改数据属性,但是很麻烦
  res.forEach(e => {
    arr.push(e);
  });
  // 方法4 成功 
   arr.value =res
  //方法5 成功
  arr2.arr = res
};
</script>
<template>
  <h1>Demo</h1>
</template>

3、问题怎么取到reactive对象,并将对象传给后端

我已经定义了reactiveobejct:

代码语言:javascript
复制
const selectedAnswers = reactive({})

稍后,我将值赋给此对象并可以看到它:

代码语言:javascript
复制
Proxy {2: "Lorem, ipsum dolor.", 4: "Lorem ipsum dolor sit axet consectetur adipisicing."}

我需要得到这个对象,并将其发送到后端,但不知道如何做到这一点。我可以访问选定的答案[2]它将打印“Lorem,ipsumdolor.”,但键可以更改,我尝试使用以下方法获取此对象:

代码语言:javascript
复制
selectedAnswers.value
selectedAnswers.values
...

我不能像“selectedAnswers”那样发送它,我需要以某种方式打开数据并将其作为纯JSON发送

解决方案:

reactive对象上使用toRaw

代码语言:javascript
复制
const answers = toRaw(selectedAnswers)

这里就是vue3中setup组合式api中如何定义响应式数据并且修改赋值全部内容了

我正在参与2024腾讯技术创作特训营最新征文,快来和我瓜分大奖!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 需求:vue3中setup组合式api中如何定义响应式数据并且修改赋值呢?
    • 1、字符串/数字:“ref”是vue3中用来存储值的响应式数据源,它可以定义字符串,数字等
      • 2、数组/对象:引入 reactive 用来定义对象数据包括数组和对象
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档