Vue3 Composition API
程序员文章站
2022-05-17 10:37:40
...
主要作用:将分隔开得数据和方法,可以囊括在一起使用。
目录
setup
setup:在创建组件之前,比beforeCreate还要前面
没用setup时的例子:
<template>
<div class="about">
<h1 @click="changeEvent">计数:{{count}}</h1>
</div>
</template>
<script>
export default{
name:'App',
data(){
return {
count:0
}
},
methods:{
changeEvent(){
this.count++
}
}
}
</script>
用了setup后的代码:
<template>
<div class="about">
<h1 @click="changeEvent">计数:{{count}}</h1>
<h1 @click="changeNum">计数:{{num}}</h1>
</div>
</template>
<script>
import { ref } from 'vue'
export default{
name:'App',
data(){
return {
count:0
}
},
methods:{
changeEvent(){
this.count++
}
},
setup(){
const num = ref(0)
function changeNum(){
//ref(0)这个值是保存在num里面
num.value+=5
}
return {num,changeNum}
}
}
</script>
用法
1.setup必须return
2.setup(props) 父组件传给子组件的参数可以在setup里面处理
3.setup(props,content)这个content父组件传递过来的其他信息
reactive是个响应对象
<template>
<div class="about">
<h1 @click="changeEvent">计数:{{count}}</h1>
<h1 @click="changeNum">计数:{{num}}</h1>
<h1>用户名:{{user.username}}</h1>
<h1>用户名:{{user.type}}</h1>
</div>
</template>
<script>
import { ref,reactive } from 'vue'
export default{
name:'App',
data(){
return {
count:0
}
},
methods:{
changeEvent(){
this.count++
}
},
setup(){
const num = ref(0)
const user =reactive({
username:"Betty",
age:22,
type:"爱学习"
})
function changeNum(){
//ref(0)这个值是保存在num里面
num.value+=5
}
return {num,changeNum,user}
}
}
</script>
使用toRef将reactive解析成ref
<template>
<div class="about">
<h1 @click="changeEvent">计数:{{count}}</h1>
<h1 @click="changeNum">计数:{{num}}</h1>
<h1>用户名:{{username}}</h1>
<h1>用户名:{{type}}</h1>
</div>
</template>
<script>
import { ref,reactive,toRefs } from 'vue'
export default{
name:'App',
data(){
return {
count:0
}
},
methods:{
changeEvent(){
this.count++
}
},
setup(){
const num = ref(0)
const user =reactive({
username:"Betty",
age:22,
type:"爱学习"
})
function changeNum(){
//ref(0)这个值是保存在num里面
num.value+=5
}
return {num,changeNum,...toRefs(user)}
}
}
</script>
除了用props传递数据还可以使用Provide / Inject
provide和inject启用依赖注入。这两者只能在使用当前活动实例的setup()期间被调用
首先2者都需要导入(注意,我的意思是她们是导入进来的,不一定要在同一个Vue下)
import { provide, inject } from 'vue'
在父组件里写
const student=reactive({
username:"Betty",
age:22,
type:"爱学习"
})
provide('student',student)
子组件里:
setup(props,content){
const student =inject('student')
return {...student}
}
下一篇: yii2源码学习笔记(九)
推荐阅读
-
html5编辑API之range对象(一)
-
HBase 系列(六)——HBase Java API 的基本使用
-
Java日期时间API系列5-----Jdk7及以前的日期时间类TimeUnit在并发编程中的应用
-
ASP.NET Core Web API 最佳实践指南
-
API之Scanner,Random,ArrayList基础运用。重点是ArrayList
-
spring boot 2 集成JWT实现api接口认证
-
Java8 日期和时间API
-
Java日期时间API系列12-----Jdk8中java.time包中的新的日期时间API类,日期格式化,常用日期格式大全
-
Ioc依赖注入:Unity4.0.1 在项目中的应用 (MVC和API)
-
C# MVC Api无法获得参数