vue3中defineComponent 的作用

vue3中,新增了 defineComponent ,它並沒有實現任何的邏輯,只是把接收的 Object 直接返回,它的存在是完全讓傳入的整個對象獲得對應的類型,它的存在就是完全為了服務 TypeScript 而存在的。

我都知道普通的組件就是一個普通的對象,既然是一個普通的對象,那自然就不會獲得自動的提示,

import { defineComponent } from 'vue'

const component = {
  name: 'Home',
  props:{
    data: String,
  },
  setup // 沒有該有的提示,這非常的不友好
}

export default component

但是當我們加上 defineComponent() 之後,就完全不一樣了,可以獲得自動提示,vue2、vue3的自動提示都有

 
import { defineComponent } from 'vue'

const component = {
  name: 'Home',
  props:{
    data: String,
  },
  setup(){
    // setup 可接受兩個參數,一個props,和 context
  }
}

export default component

 

接下來看看 setup 中的兩個參數 props 與 context ,
props指組件傳遞來的參數,並且ts可以推論出props的類型.props也就是 vue2 中組件中的 props
context 有三個屬性 attrs slots emit 分別對應vue2中的 attrs属性、slots插槽、$emit發送事件

import { defineComponent } from 'vue'

const component = {
  name: 'Home',
  props:{
    data: String,
  },
  setup(props, context){
    // props.data
    // context.attrs    context.slots    context.emit 
  }
}

export default component

 



作者:嘉奇
鏈接://www.jianshu.com/p/50ab6ac2e3e7
來源:簡書
著作權歸作者所有。商業轉載請聯繫作者獲得授權,非商業轉載請註明出處。
Tags: