组合式api-通过reactive和ref提供响应式数据
在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提供响应式数据的更多相关文章
- 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# ...
- Angular Reactive Forms -- Model-Driven Forms响应式表单
Angular 4.x 中有两种表单: Template-Driven Forms - 模板驱动式表单 (类似于 AngularJS 1.x 中的表单 ) 官方文档:https://v2.angul ...
- vue源码之响应式数据
分析vue是如何实现数据响应的. 前记 现在回顾一下看数据响应的原因. 之前看了vuex和vue-i18n的源码, 他们都有自己内部的vm, 也就是vue实例. 使用的都是vue的响应式数据特性及$w ...
- Vue实现双向绑定的原理以及响应式数据
一.vue中的响应式属性 Vue中的数据实现响应式绑定 1.对象实现响应式: 是在初始化的时候利用definePrototype的定义set和get过滤器,在进行组件模板编译时实现water的监听搜集 ...
- 仿VUE创建响应式数据
VUE对于前端开发人员都非常熟悉了,其工作原理估计也都能说的清个大概,具体代码的实现估计看的人不会太多,这里对vue响应式数据做个简单的实现. 先简单介绍一下VUE数据响应原理,VUE响应数据分为对象 ...
- Vue2手写源码---响应式数据的变化
响应式数据变化 数据发生变化后,我们可以监听到这个数据的变化 (每一步后面的括号是表示在那个模块进行的操作) 手写简单的响应式数据的实现(对象属性劫持.深度属性劫持.数组函数劫持).模板转成 ast ...
- angular,vue,react的基本语法—插值表达式,渲染数据,响应式数据
基本语法: 1.插值表达式: vue:{{}} react:{} angular:{{}} 2.渲染数据 vue js: export default{ data(){ return{ msg:&qu ...
- vue响应式数据变化
vue响应式数据变化 话不多说,先上代码: //拷贝一份数组原型,防止修改所有数组类型变量的原型方法 let arrayProto = Array.prototype;// 数组原型上的方法 let ...
- vue基础响应式数据
1.vue 采用 v……vm……m,模式,v---->el,vm---->new Vue(实例),m---->data 数据,让前端从操作大量的dom元素中解放出来. 2.vue响应 ...
- 【Vue原理模拟】模拟Vue实现响应式数据
1. 预期效果 当数据变动时,触发自定义的回调函数. 2. 思路 对对象 object 的 setter 进行设置,使 setter 在赋值之后执行回调函数 callback(). 3.细节 3.1 ...
随机推荐
- Linux下导入MySQL数据库
导入数据库1.首先建空数据库mysql>create database abc; 2.导入数据库方法一:(1)选择数据库mysql>use abc;(2)设置数据库编码mysql>s ...
- 「codeforces - 1344D」Résumé Review
link. 有点狗,但还算个好题. 设定 \(f_i(x)=a_ix-x^3\),\(\Delta_i(x)=f_i(x)-f_i(x-1)\),可以洞察到 \(\Delta_i(x)\) 在正自然数 ...
- mpi转以太网连接300PLC在气动系统中的应用
mpi转以太网连接300PLC在气动系统中的应用 某企业装备有限公司 摘要 工业通讯迅速发展的今天,MPI转以太网通讯已经发展为成熟,稳定,高效通讯 方式,兴达易控自主研发的MPI转以太网模块MPI- ...
- 高可用mongodb集群(分片+副本):规划及部署
目录 ■■ 概述 ■ 下图是一个典型的3节点分片副本集群 ■ Mongos Server ■ config server ■ shard server ■ replica set ■ 仲裁者(Arbi ...
- [NISACTF 2022]level-up
[NISACTF 2022]level-up 查看源码,根据这个提示就可以反应出是需要去访问robots.txt这个文件 访问level_2_1s_h3re.php进入第二关 需要post进去arra ...
- 【原型链污染】Python与Js
[原型链污染]Python与Js 一.背景 最近在TSCTF的比赛题中遇到了Python的原型链污染题目,所以借此机会学习一下.说到原型链,最多的还是在Js中,所以就一并学习一下.(因为是菜鸡所以文章 ...
- Eolink Apikit 如何进行自动化测试?
自动化测试是一种软件测试方法,利用自动化工具和脚本来执行测试用例,以验证软件应用程序的功能.性能.稳定性等特性.自动化测试的主要目的是提高测试效率.减少测试成本,并确保软件的质量和可靠性. 作为测试人 ...
- python包引用方式总结
本文为博主原创,转载请注明出处: 在Python中,有多种引用包的方式.以下是常见的方式: 1. import语句 import语句是最常见和推荐的引用包的方式.它允许你引入整个包或包中的特定模块/子 ...
- 强化学习的一周「GitHub 热点速览」
当强化学习遇上游戏,会擦出什么样的火花呢?PokemonRedExperiments 将经典的 Pokeman 游戏接上了强化学习,效果非同凡响,不然能一周获得 4.5k star 么?看看效果图就知 ...
- FWT & FMT(位运算卷积)学习笔记
它们两个的全名叫 快速沃尔什变换(FWT) 和 快速莫比乌斯变换(FMT),用来在 \(O(n\log n)\) 时间复杂度内求位运算卷积. 因为 FMT 能解决的问题是 FWT 的子集,所以这里不讲 ...