vue3函数setUp和reactive函数详细讲解
1 setUp的执行时机
我们都知道,现在vue3是可以正常去使用methods的。
但是我们却不可以在setUp中去调用methods中的方法。
为什么了???
我们先了解一下下面这两个生命周期函数,分别是:
beforeCreate 表示data 中的数据还没有初始化,是不可以使用的
Created : data已经被初始化了,可以使用
setUp在beforeCreate 和 Created 这两个函数之间。
是不是就知道为啥setUp中不可以去调用methods中的方法了。
2.setUp中无法使用data中的数据和调用methods的方法
<script>
export default {
name: 'App',
data:function(){
return {
mess:"我是data"
}
},
methods:{
func(){
console.log("methods中的func")
},
},
setup(){
console.log('this',this);//undefined
this.func();//无法调用的哈
},
}
</script>
3.setUp函数的注意点
(1)由于我们不能够在setUp函数中使用data和methods.
所以vue为了避免我们的错误使用,直接将setUp函数中的this
修改成为了undefined
(2) setUp函数只能够数同步的,不能够是异步的哈。
就是说你不能够这样操作
async setup(){
},
这样会导致界面空白哈
4 Vue3中的reactive
在Vue2中响应式数据是通过de fineProperty来实现的.
而在Vue3中响应式数据是通过ES6的Proxy来实现的
reactive需要的注意点
reactive参数必须是对象(json/arr)
如果给reactive传递了其它对象
默认情况下修改对象,界面不会自动更新
如果想更新,可以通过重新赋值的方式
5 reactive传入字符串数据不跟新
<template>
<div>
<div>
<li>{{str}}</li>
<button @click="func1">按钮</button>
</div>
</div>
</template>
<script>
import {reactive} from 'vue'
export default {
name: 'App',
setup(){
// reactive 的本质就是传入的数据包装成一个proxy对象
// 由于在创建的时候,传递的不是一个对象,那么将不会实现响应式。
let str=reactive(123)
function func1(){
console.log(str);//123
str=666;
}
return {str,func1 }
},
}
</script>
我们发现点击按钮的时候,视图并没有更新。
因为我们传不是一个对象.如果想跟新视图。
应该使用ref函数

6 reactive传入数组
<template>
<div>
<div>
<li>{{arr}}</li>
<button @click="func1">按钮</button>
</div>
</div>
</template>
<script>
import {reactive} from 'vue'
export default {
name: 'App',
setup(){
let arr=reactive([{name:'张三',age:19},{name:'李四',age:39}])
function func1(){
arr[0].name="我是张三的哥哥"
}
return {arr,func1 }
},
}
</script>

5 reactive传入其他对象的跟新方式
<template>
<div>
<div>
<li>{{sate.time}}</li>
<button @click="func1">按钮</button>
</div>
</div>
</template>
<script>
import {reactive} from 'vue'
export default {
name: 'App',
setup(){
let sate=reactive({
time:new Date()
})
function func1(){
//传入的是其他对象,直接跟新
sate.time="2021年-6月-9日";
}
return {sate,func1 }
},
}
</script>
vue3函数setUp和reactive函数详细讲解的更多相关文章
- 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# ...
- # vue3 ref 和 reactive 函数
vue3 ref 和 reactive 函数 前言 上一篇博文介绍 setup 函数的时候,最后出现一个问题,就是在 setup 函数中,编写一个事件,直接去修改定义的变量,发现页面上没有更新成功,并 ...
- 第二十三节:Java语言基础-详细讲解函数与数组
函数 函数在Java中称为方法,在其他语言中可能称为函数,函数,方法就是定义在类中具有特定功能的程序.函数,在Java中可称为方法. 函数的格式: 修饰符 返回值类型 函数名(参数类型 参数1, 参数 ...
- python format函数/print 函数详细讲解(4)
在python开发过程中,print函数和format函数使用场景特别多,下面分别详细讲解两个函数的用法. 一.print函数 print翻译为中文指打印,在python中能直接输出到控制台,我们可以 ...
- Arduino中的setup()和loop()函数
今天看arduino的源代码,对于arduino中的setup和loop有了新的理解,可能你以前对于这俩个函数就是知道arduino是初始化,而loop是死循环,但是托若你看了Arduino的主函数你 ...
- php中foreach()函数与Array数组经典案例讲解
//php中foreach()函数与Array数组经典案例讲解 function getVal($v) { return $v; //可以加任意检查代码,列入要求$v必须是数字,或过滤非法字符串等.} ...
- setUp()和tearDown()函数
1.什么是setUp()和tearDown()函数? 2.为什么我们要用setUp()和tearDown()函数? 3.我们该怎样用setUp()和tearDown()? 1.什么是setUp()和t ...
- 『德不孤』Pytest框架 — 10、setUp()和tearDown()函数
目录 1.setUp()和tearDown()函数介绍 2.setUp()和tearDown()函数作用 3.setUp()和tearDown()函数说明 4.示例 (1)方法级 (2)类级 (3)函 ...
- 关于C++函数返回局部对象的详细分析
以前一直挺好奇的,C++是怎么在函数内返回一个局部对象的.因为按照我之前的想法,函数返回一个基本类型的值是通过存放到ecx实现的(关于浮点不了解),但是局部对象又是比较大的,很明显不能使用寄存器作为通 ...
随机推荐
- PowerShell-2.解决禁止本地执行脚本
现象 直接找到XXX.ps1右键 使用PowerShell运行没反应,然后打开PowerShel把脚本推进去显示这个: 原因是因为脚本执行权限默认是Restricted,这个是禁止执行任何本地脚本. ...
- nodejs-REPL/回调函数/事件循环
REPL 回调函数 事件循环 REPL----------------------------------------------------- Node.js REPL(Read Eval Prin ...
- 一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第n次落地时,共经过多少米?第n次反弹多高?(n<=10)
单纯考逻辑 题目: 一球从100米高度自由落下,每次落地后反跳回原高度的一半:再落下,求它在第n次落地时,共经过多少米?第n次反弹多高?(n<=10) 输入描述: 一行,一个整数n (1< ...
- 启动spring boot项目时报错:java.lang.ClassNotFoundException: javax.servlet.Filter
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring- ...
- spring boot 与 Mybatis整合(*)
在pom.xml文件中加入数据库.spring-mybatis整合 <!-- spring boot 整合mybatis --> <dependency> <groupI ...
- Spring Boot & Cloud 轻量替代框架 Solon 1.4.1 发布
Solon 是一个微型的Java开发框架.强调,克制 + 简洁 + 开放的原则:力求,更小.更快.更自由的体验.支持:RPC.REST API.MVC.Micro service.WebSocket. ...
- 并发王者课 - 青铜 2:峡谷笔记 - 简单认识Java中的线程
在前面的<兵分三路:如何创建多线程>文章中,我们已经通过Thread和Runnable直观地了解如何在Java中创建一个线程,相信你已经有了一定的体感.在本篇文章中,我们将基于前面的示例代 ...
- [Scala] 面向对象
类定义 当属性是private时,scala会自动为其生成get和set方法 只希望scala生成get,不生成set,可定义为常量 不生成get和set方法,使用private[this]关键字 1 ...
- ruby基础(二)
ruby语法基础 1.方法 方法时对象定义的与该对象相关的操作.在Ruby中,对象的所有的操作都被封装成 方法. 语法糖:语法糖是一种为了照顾一般人的习惯而产生的特殊语法. ruby中一切数据都是对象 ...
- PyCharm和JDK安装与配置(windows)
原创 PyCharm和JDK安装与配置(windows) mb5cd21e691f31a关注0人评论2024人阅读2020-03-20 21:08:41 一.PyCharm安装与配置 PyChar ...