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

举报
国服第二切图仔 发表于 2023/02/20 18:39:14 2023/02/20
【摘要】 ​ 需求:vue3中setup组合式api中如何定义响应式数据并且修改赋值呢?1、字符串/数字:“ref”是vue3中用来存储值的响应式数据源,它可以定义字符串,数字等<script setup>import { ref } from 'vue'// “ref”是用来存储值的响应式数据源。// 理论上我们在展示该字符串的时候不需要将其包装在 ref() 中,const message = r...

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

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

<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,对于对象和数组都不能直接整个赋值

<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>


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





【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。