Vue3.0—setup

拉开序幕的setup

1. 理解:Vue3.0中一个新的配置项,值为一个函数。

2. setup是所有Composition API(组合API)“ 表演的舞台 ”

4. 组件中所用到的:数据、方法等等,均要配置在setup中。

5. setup函数的两种返回值:

1. 若返回一个对象,则对象中的属性、方法, 在模板中均可以直接使用。(重点关注!)

2.若返回一个渲染函数:则可以自定义渲染内容。(了解)

6. 注意点:

1. 尽量不要与Vue2.x配置混用

- Vue2.x配置(data、methos、computed...)中可以访问到setup中的属性、方法。

- 但在setup中不能访问到Vue2.x配置(data、methos、computed...)。

- 如果有重名, setup优先。

2. setup不能是一个async函数,因为返回值不再是return的对象, 而是promise, 模板看不到return对象中的属性。(后期也可以返回一个Promise实例,但需要Suspense和异步组件的配合)

setup的两个注意点

- setup执行的时机

-在beforeCreate之前执行一次,this是undefined。

- setup的参数

- props:值为对象,包含:组件外部传递过来,且组件内部声明接收了的属性。

- context:上下文对象

- attrs:值为对象,包含:组件外部传递过来,但没有在props配置中声明的属性, 相当于```this.$attrs```。

- slots:收到的插槽内容, 相当于 ```this.$slots```。

- emit: 分发自定义事件的函数, 相当于 ```this.$emit```。

<template>
    <h1>一个人的信息</h1>
    <h2>姓名:{{person.name}}</h2>
    <h2>年龄:{{person.age}}</h2>
    <button @click="test">测试触发一下Demo组件的Hello事件</button>
</template>
<script>
    import {reactive} from 'vue'
    export default {
        name: 'Demo',
        props:['msg','school'],
        emits:['hello'],
        setup(props,context){
            // console.log('---setup---',props)
            // console.log('---setup---',context)
            // console.log('---setup---',context.attrs) //相当与Vue2中的$attrs
            // console.log('---setup---',context.emit) //触发自定义事件的。
            console.log('---setup---',context.slots) //插槽
            //数据
            let person = reactive({
                name:'张三',
                age:18
            })
            //方法
            function test(){
                context.emit('hello',666)
            }
            //返回一个对象(常用)
            return {
                person,
                test
            }
        }
    }
</script>

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值