在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. SqlServer表添加字段

    IF NOT EXISTS (SELECT * FROM syscolumns WHERE id=object_id('表名') AND name='字段名') ALTER TABLE 表名 ADD ...

  2. Iphone通过ssh进行访问

    Iphone通过usb进行ssh访问文件系统 在公司里wifi很不给力,而我又想通过ssh访问我的iphone,进行一些权限访问,这时我们该 itunnel_mux_rev71这个工具可以帮我们的忙 ...

  3. Python 设置环境变量方法

    Python中的os模块 Python中的os模块提供了很多与操作系统相关的功能.其中就包括设置环境变量的方法,即setenv()方法. 使用os.setenv()方法设置环境变量 import os ...

  4. 使用HTML一键打包IPA工具打包KRPANO全景项目

    该软件已经被GDB苹果网页一键打包工具取代,详情参考如下链接 GDB苹果网页一键打包 HTML一键打包IPA(苹果应用)工具可以把本地HTML项目或者网站打包为一个苹果应用IPA文件,无需编写任何代码 ...

  5. Nginx map 实现时间格式转换

    哈喽大家好,我是咸鱼 最近我们需要把 Nginx 的日志接入到自研的日志采集平台上,但是这个平台只支持 JSON 格式,所以需要把 Nginx 日志格式改成 JSON 格式 例如下面这样的效果 刚开始 ...

  6. 从内核世界透视 mmap 内存映射的本质(原理篇)

    本文基于内核 5.4 版本源码讨论 之前有不少读者给笔者留言,希望笔者写一篇文章介绍下 mmap 内存映射相关的知识体系,之所以迟迟没有动笔,是因为 mmap 这个系统调用看上去简单,实际上并不简单, ...

  7. Springboot简单功能示例-1 实现基本WEB服务

    springboot-sample 介绍 springboot简单示例 跳转到发行版 查看发行版说明 软件架构(当前发行版使用) springboot 安装教程 git clone --branch ...

  8. 【AI 模型】首个 Joy 模型诞生!!!全民生成 Joy 大片

    接上一篇文章 "只要10秒,AI生成IP海报,解放双手",这次是全网第一个"共享joy模型",真的赚到了! 经过这段时间无数次的探索.试错.实验,最终积累了非常 ...

  9. linux文件、目录权限和所有者

    文件.目录权限和所有者 简介:用户对一个文件或目录具有访问权限,这些访问权限决定了谁能访问,以及如何范围这些文件和目录.通过设置权限可以限制或允许以下三种用户访问: 文件的用户所有者(属主) 文件的组 ...

  10. How can I access GPT-4?

    How can I access GPT-4?   Written by Joshua J.. Updated over a week ago API Access Most users will n ...