在setup中如果是直接定义遍历数据并不是响应式数据,和vue2中的data选项提供的数据不一样,vue2的data中返回的数据全部都是响应式数据。

<script setup>
// 这样提供的数据并不是响应式数据,和vue2中的data选项提供的数据并不是一样。
let state = 888
const getState = () => {
return state
}
const setState = () => {
state = 999
}
</script> <template>
<div>
hello vue3
<p>state: {{ state }}</p>
<p>state: {{ getState() }}</p>
<!--修改不会生效,因为并不是响应式数据-->
<button @click="setState()">修改state的值为999</button>
</div>
</template>

使用reactive创建响应式数对象

reactive函数支持传递“对象类型”的参数,并返回一个响应式数据对象。

缺点

只能传递“对象类型”的参数(也就是你不能直接给一个数字、字符串这种简单类型的)

可以用过ref()函数来代替reactive()来解决这个缺点,下面会写。

使用步骤:

  • 导入reactive函数
  • 使用reactive函数并传递一个对象类型的参数

使用实例

<script setup>
// 1. 导入reactive函数
import {reactive} from "vue";
// 2. 使用reactive函数并传递一个对象类型作为参数
const myData = reactive({
state: 888
})
const getState = () => {
// 使用的时候是通过对象来操作
return myData.state
}
const setState = () => {
// 设置的时候也是一样,通过对象操作
myData.state = 999
}
</script> <template>
<div>
hello vue3
<p>state: {{ getState() }}</p>
<button @click="setState()">修改state的值为999</button>
</div>
</template>

使用ref创建响应式数据对象

上面的reactive函数创建的响应式对象有个缺点就是只能接收对象类型的参数。

而ref()函数正好可以解决这个问题,但是使用上有一些差别和注意事项!

<!-- 使用ref()函数创建响应式数据对象 -->
<script setup>
// 1. 同样地,也是要先导入ref函数
import {ref} from "vue";
// 2. 使用ref函数并传递你想要的数据进行包装。
const state = ref(666)
const getState = () => {
// 在script中,使用ref()函数包装过的数据,必须要用.value来调用、和设置值
return state.value
}
const setState = () => {
// 在script中,使用ref()函数包装过的数据,必须要用.value来调用、和设置值
state.value = 999
}
</script> <template>
<div>
hello vue3
<!-- **但是在模板中,就不需要使用.value,因为会自动帮你做了** -->
<p>state: {{ state }}</p>
<button @click="setState()">修改state的值为999</button>
</div>
</template>

组合式api-通过reactive和ref提供响应式数据的更多相关文章

  1. Vue3.0工程创建 && setup、ref、reactive函数 && Vue3.0响应式实现原理

    1 # 一.创建Vue3.0工程 2 # 1.使用vue-cli创建 3 # 官方文档: https://cli.vuejs.org/zh/guide/creating-a-project.html# ...

  2. Angular Reactive Forms -- Model-Driven Forms响应式表单

    Angular 4.x 中有两种表单: Template-Driven Forms - 模板驱动式表单 (类似于 AngularJS 1.x 中的表单 )  官方文档:https://v2.angul ...

  3. vue源码之响应式数据

    分析vue是如何实现数据响应的. 前记 现在回顾一下看数据响应的原因. 之前看了vuex和vue-i18n的源码, 他们都有自己内部的vm, 也就是vue实例. 使用的都是vue的响应式数据特性及$w ...

  4. Vue实现双向绑定的原理以及响应式数据

    一.vue中的响应式属性 Vue中的数据实现响应式绑定 1.对象实现响应式: 是在初始化的时候利用definePrototype的定义set和get过滤器,在进行组件模板编译时实现water的监听搜集 ...

  5. 仿VUE创建响应式数据

    VUE对于前端开发人员都非常熟悉了,其工作原理估计也都能说的清个大概,具体代码的实现估计看的人不会太多,这里对vue响应式数据做个简单的实现. 先简单介绍一下VUE数据响应原理,VUE响应数据分为对象 ...

  6. Vue2手写源码---响应式数据的变化

    响应式数据变化 数据发生变化后,我们可以监听到这个数据的变化 (每一步后面的括号是表示在那个模块进行的操作) 手写简单的响应式数据的实现(对象属性劫持.深度属性劫持.数组函数劫持).模板转成 ast ...

  7. angular,vue,react的基本语法—插值表达式,渲染数据,响应式数据

    基本语法: 1.插值表达式: vue:{{}} react:{} angular:{{}} 2.渲染数据 vue js: export default{ data(){ return{ msg:&qu ...

  8. vue响应式数据变化

    vue响应式数据变化 话不多说,先上代码: //拷贝一份数组原型,防止修改所有数组类型变量的原型方法 let arrayProto = Array.prototype;// 数组原型上的方法 let ...

  9. vue基础响应式数据

    1.vue 采用 v……vm……m,模式,v---->el,vm---->new Vue(实例),m---->data 数据,让前端从操作大量的dom元素中解放出来. 2.vue响应 ...

  10. 【Vue原理模拟】模拟Vue实现响应式数据

    1. 预期效果 当数据变动时,触发自定义的回调函数. 2. 思路 对对象 object 的 setter 进行设置,使 setter 在赋值之后执行回调函数 callback(). 3.细节 3.1 ...

随机推荐

  1. API接口获取的商品详情该如何使用

    获取到商品API接口返回的商品详情数据后,我们可以将其用于以下方面: 商品展示:通过获取到的商品详情数据,我们可以展示商品信息,包括商品名称.价格.商品图片.描述等信息.我们可以将这些信息显示在商品详 ...

  2. CCF 202012-5星际旅行(20~100分)

    前置知识 线段树:通过懒惰标记,可实现区间处理,和区间询问皆为\(O(logn)\)时间复杂度的数据结构,是一种二叉树.因此对于一个节点\(st\),其左儿子节点为\(st*2\),右节点为\(st* ...

  3. Linux虚拟机安装及下载

    centos 7操作系统下载及安装步骤 (仅供参考) 下载: 1.打开如下网站:先下载镜像文件 ping:https://www.centos.org/download/ 2.进入到如下界面 3.然后 ...

  4. 2017-D

    2017-D 数据库部分 使用Windows 身份验证登录SQL Server ,建立数据库test0322,文件日志保存到一个专门的文件夹 建表 备份数据库,选定所创建数据库,右键-任务-备份-选择 ...

  5. 怎么搭建web组态

    web组态是指通过可视化拖拽组件的方式,低代码搭建监控大屏.web页面.物联网各行业的数据以及监控场景,每个行业的业务不同,需要展示的页面也不同.组态快速搭建页面的优势,能更好的满足不同定制化监控页面 ...

  6. 3步体验在DAYU200开发板上完成OpenHarmony对接华为云IoT

    本文分享自华为云社区<DAYU200+OpenHarmony 3.1.1对接华为云IOT[华为云IoT+鸿蒙]>,作者:DS小龙哥. 一.前言 OpenHarmony 3.1.1 是一个开 ...

  7. Blazor Server 发起HttpPost请求,但是多参数

    一.介绍 今天突然想起之前工作上遇到的一个问题,在做Blazor 开发时后端给的一个接口请求方式是Post ,但是他需要携带多个参数,新建一个公共类又觉得麻烦,我就尝试着怎么在Post请求中携带多个参 ...

  8. PAI-DSW常见问题

    PAI-DSW常见问题 更新时间:2023年6月5日 18:40:00 本文为您介绍PAI-DSW的相关问题. 什么是PAI-DSW? PAI-DSW实例如何挂载和使用自己的NAS文件系统? 如何在P ...

  9. ESP32

    Main menu   Search Create account Log in Personal tools     Apply for a scholarship & submit you ...

  10. 文心一言 VS 讯飞星火 VS chatgpt (128)-- 算法导论11.1 3题

    三.用go语言,试说明如何实现一个直接寻址表,表中各元素的关键字不必都不相同,且各元素可以有卫星数据.所有三种字典操作(INSERT.DELETE和SEARCH)的运行时间应为O(1)(不要忘记 DE ...