defineComponent

1. 是什么?

defineComponent 是 Vue 3 中定义组件的核心函数。

2. 基本用法

// 1. 最简单的组件定义
export default defineComponent({
  name: 'MyComponent',
  setup() {
    return {}
  }
})

3. 两种写法

3.1 Options API(选项式 API ∈ Vue 2 风格 )

export default defineComponent({
  // 组件名
  name: 'MyComponent',

  // 组件属性
  props: {
    title: String,
    count: Number
  },

  // 数据
  data() {
    return {
      message: 'Hello'
    }
  },

  // 计算属性
  computed: {
    upperMessage() {
      return this.message.toUpperCase()
    }
  },

  // 方法
  methods: {
    sayHello() {
      console.log(this.message)
    }
  },

  // 生命周期
  mounted() {
    console.log('组件已挂载')
  }
})

3.2 Composition API(组合式 API ∈ Vue 3 推荐)

import { ref, computed, onMounted } from 'vue'

export default defineComponent({
  name: 'MyComponent',

  props: {
    title: String
  },

  setup(props) {
    // 响应式数据
    const count = ref(0)
    const message = ref('Hello')

    // 计算属性
    const doubleCount = computed(() => count.value * 2)

    // 方法
    const increment = () => {
      count.value++
    }

    // 生命周期
    onMounted(() => {
      console.log('组件已挂载')
    })

    // 返回给模板使用
    return {
      count,
      message,
      doubleCount,
      increment
    }
  }
})