【Vue3】第三部分 setup的注意点

导读:本篇文章讲解 【Vue3】第三部分 setup的注意点,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

【Vue3】第三部分 setup的注意点



3. setup的注意点

3.1 执行的时机

beforeCreate之前setup会执行一次,setupthisundefined

<template>
  <div>
    <h1>Welcome to learn about Vue3!</h1>
    <h2>name:{{person.name}}</h2>
    <h2>gender:{{person.gender}}</h2>
  </div>
</template>

<script>
import {reactive} from "vue"
export default {
    name:'TestDemo',
    setup(){
      const person = reactive({
        name:'Tree',
        gender:'male'
      })
      //1. setup执行时机在beforeCreate前
      console.log('----setup----',this);  //this是undefined

      return {
        person
      }

    },
    beforeCreate(){
      console.log('----beforeCreate----');
    }
}
</script>


3.2 setup的参数

setup有两个参数分别是:propscontext

props:

  • 值为对象,组件外部传递进来,并且组件内部声明接收了的属性

context:

  • attrs:值为对象,组件外部传进来,但是没有被props配置中声明接收的属性,相当于this.$attrs
  • emit:分发自定义事件的函数,相当于this.$emit
  • slots:收到插槽内容,相当于this.$slots

TestDemo组件

<template>
  <div>
    <h1>Welcome to learn about Vue3!</h1>
    <h2>name:{{person.name}}</h2>
    <h2>gender:{{person.gender}}</h2>
    <h2>{{message}}</h2>
    <h2>{{hello}}</h2>
    <!-- 插槽 -->
    <slot name="here"></slot>
    <button @click="test">click me show</button>
  </div>
</template>

<script>
import {reactive} from "vue"
export default {
    name:'TestDemo',
    props:["message","hello"], //接收
    setup(props,context){
      const person = reactive({
        name:'Tree',
        gender:'boy'
      })
      console.log(props); 

      console.log(context.attrs);

      console.log(context.emit);

      console.log(context.slots);

      // 触发自定义事件
      function test(){
        context.emit('Test',person)
      }

      return {
        person,
        test
      }

    }
}
</script>


App组件

<template>
  <TestDemo
   message = "The basic information" 
   hello='Say Hello!'
   @Test = 'Demo'
   >
   <!-- <template slot="here"> -->
    <template v-slot:here>
        <h2> I am slot</h2>
    </template>
   </TestDemo>
</template>

<script>
import TestDemo from "./components/TestDemo.vue"
export default {
  name:'App',
  components:{TestDemo},
  setup(){
    function Demo (val){
      alert(`Hello!everyone! Myname is ${val.name},I am a lovely ${val.gender}!`)

    }

    return{
      Demo
    }
  }
}
</script>



总结

例如:以上就是今天要讲的内容,希望对大家有所帮助!!!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/82935.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!