笔记
setup 是 组合式 API
组合式 API:
Composition API
想完Vue3,要先搞懂setup。
setup 是 Vu3 新提出来的一个配置项。

视频教程
拉开序幕的setup
理解:Vue3.0中一个新的配置项,值为一个函数。
setup是所有Composition API(组合API)“ 表演的舞台 ”。
组件中所用到的:数据、方法等等,均要配置在setup中。
setup函数的两种返回值:
4.1 若返回一个对象,则对象中的属性、方法, 在模板中均可以直接使用。(重点关注!)
4.2 若返回一个渲染函数:则可以自定义渲染内容。(了解)注意点:
5.1 尽量不要与Vue2.x配置混用
- Vue2.x配置(data、methos、computed…)中可以访问到setup中的属性、方法。
- 但在setup中不能访问到Vue2.x配置(data、methos、computed…)。
- 如果有重名, setup优先。
5.2 setup不能是一个async函数,因为返回值不再是return的对象, 而是promise, 模板看不到return对象中的属性。(后期也可以返回一个Promise实例,但需要Suspense和异步组件的配合)
源码
App.vue
<template>
<!-- Vue3 可以没有 div 根标签
<h1> I'm App component ^_^ </h1>
-->
<h1>一个人的信息</h1>
<h2>姓名:{{name}}</h2>
<h2>年龄:{{age}}</h2>
<h2>性别:{{sex}}</h2>
<h2>a的值是:{{a}}</h2>
<button @click="sayHello">说话(Vue3所配置的——sayHello)</button>
<br>
<br>
<button @click="sayWelcome">说话(Vue2所配置的——sayWelcome)</button>
<br>
<br>
<button @click="test1">测试一下在Vue2的配置中去读取Vue3中的数据、方法</button>
<br>
<br>
<button @click="test2">测试一下在Vue3的setup配置中去读取Vue2中的数据、方法</button>
</template>
<script>
import {h} from 'vue'
import HelloWorld from './components/HelloWorld.vue'
export default {
name: 'App',
components: {
HelloWorld
},
//Vue3中也可以使用 data
//∈ Vue2的属性 写法
data() {
return {
sex:'男',
a:100
}
},
//∈ Vue2的函数 写法
// 可以正常读取 Vue3的属性和方法。
methods: {
sayWelcome(){
alert('欢迎来到尚硅谷学习')
},
test1(){
console.log(this.sex)
console.log(this.name)
console.log(this.age)
console.log(this.sayHello)
}
},
//此处只是测试一下 setup, 暂时不考虑响应式的问题。
setup(){
//数据
let name = '张三'
let age = 18
//方法
function sayHello(){
alert(`我叫 ${name}, 我 ${age} 岁了, 你好啊`)
}
function test2(){
console.log(name)
console.log(age)
console.log(sayHello)
//记住: 不要混用。 此处就是测试在 Vue3 中无法访问 Vue2中的属性和方法
//测试在 Vue3 中读取 Vue2中的属性和方法
console.log(this.sex) //Vue2 属性
console.log(this.sayWelcome) //Vue3 方法
}
//返回一个对象 常用
//返回值 如果是对象,那么在模板中可以直接使用。
return{
name,
age,
sayHello
}
//返回一个函数(渲染函数), 直接将 返回值 把 模板中的内容 全部替换掉了。
//使用 h 之前,上面需要引入一下:
//return ()=>{return h('h1','尚硅谷')}
//return () => h('h1','尚硅谷')
}
}
</script>
