首页 > 其他分享 >Vue3之setup的两个注意点

Vue3之setup的两个注意点

时间:2022-12-27 11:22:52浏览次数:45  
标签:console Demo setup props --- 注意 context Vue3

setup的两个注意点

  • setup执行的时机

    • 在beforeCreate之前执行一次,this是undefined。
  • setup的参数

    • props:值为对象,包含:组件外部传递过来,且组件内部声明接收了的属性。
    • context:上下文对象
      • attrs: 值为对象,包含:组件外部传递过来,但没有在props配置中声明的属性, 相当于 this.$attrs
      • slots: 收到的插槽内容, 相当于 this.$slots
      • emit: 分发自定义事件的函数, 相当于 this.$emit

Demo.vue

<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>

 

App.vue

<template>
    <Demo @hello="showHelloMsg" msg="你好啊" school="school">
        <template v-slot:qwe>
            <span>ss</span>
        </template>
        <template v-slot:asd>
            <span>ss</span>
        </template>
    </Demo>
</template>

<script>
    import Demo from './components/Demo'
    export default {
        name: 'App',
        components:{Demo},
        setup(){
            function showHelloMsg(value){
                alert(`你好啊,你触发了hello事件,我收到的参数是:${value}!`)
            }
            return {
                showHelloMsg
            }
        }
    }
</script>

 

标签:console,Demo,setup,props,---,注意,context,Vue3
From: https://www.cnblogs.com/anjingdian/p/17007659.html

相关文章

  • 关于Vue3 can not find module的报错
    最近在做Vue3项目的时候,会看到这样一个报错,找不到模块.vue文件,可能是ts文件无法识别vue后缀的文件导致的,上网搜索了一下发现尤大大给出了解决方案。在src目录下新建一个.......
  • Vue3之reactive和ref对比
    reactive对比ref从定义数据角度对比:ref用来定义:基本类型数据。reactive用来定义:对象(或数组)类型数据。备注:ref也可以用来定义对象(或数组)类型数据,它内部会自动通过re......
  • C++——构造函数的使用注意事项及static用法
    1.构造函数1.构造函数赋值和初始化列表#include<iostream>usingnamespacestd;classdate{public:date(intyear=1,intmonth=1,intday=1){//函数体赋值......
  • C++——构造函数的使用注意事项及static用法
    1.构造函数1.构造函数赋值和初始化列表#include<iostream>usingnamespacestd;classdate{public:date(intyear=1,intmonth=1,intday=1){//函数体赋值......
  • C++——构造函数的使用注意事项及static用法
    1.构造函数1.构造函数赋值和初始化列表#include<iostream>usingnamespacestd;classdate{public:date(intyear=1,intmonth=1,intday=1){//函数体赋值......
  • C++——构造函数的使用注意事项及static用法
    1.构造函数1.构造函数赋值和初始化列表#include<iostream>usingnamespacestd;classdate{public:date(intyear=1,intmonth=1,intday=1){//函数体赋值......
  • C++——构造函数的使用注意事项及static用法
    1.构造函数1.构造函数赋值和初始化列表#include<iostream>usingnamespacestd;classdate{public:date(intyear=1,intmonth=1,intday=1){//函数体赋值......
  • C++——构造函数的使用注意事项及static用法
    1.构造函数1.构造函数赋值和初始化列表#include<iostream>usingnamespacestd;classdate{public:date(intyear=1,intmonth=1,intday=1){//函数体赋值......
  • Vue3之ref
    ref函数作用:定义一个响应式的数据语法: constxxx=ref(initValue)创建一个包含响应式数据的引用对象(reference对象,简称ref对象)。JS中操作数据: xxx.value模板......
  • Vue3之setup
    setupsetup是vue3中的一个新的配置项,值为一个函数,我们在组件中用到的数据、方法等等,都要配置在setup中。setup函数的返回值有两种1、返回一个渲染函数,可以自定义渲染内容......