Vue SFC 是框架指定的文件格式,由 @vue/compiler-sfc 编译成标准的 jsvascript 与 css
函数式组件
函数式组件是无状态的,它无法实例化,没有任何的生命周期和方法。创建函数式组件也很简单,只需要在模板添加 functional 声明即可。一般适合只依赖于外部数据的变化而变化的组件,因其轻量,渲染性能也会有所提高。
组件需要的一切都是通过 context 参数传递。它是一个上下文对象,具体属性查看文档。这里 props 是一个包含所有绑定属性的对象。
函数式组件
<template functional><div class="list"><div class="item" v-for="item in props.list" :key="item.id" @click="props.itemClick(item)"><p>{{item.title}}</p><p>{{item.content}}</p></div></div></template>
父组件使用
<template><div><List :list="list" :itemClick="item => (currentItem = item)" /></div></template>import List from '@/components/List.vue'export default {components: {List},data() {return {list: [{title: 'title',content: 'content'}],currentItem: ''}}}
方法
我们用 methods 选项向组件实例添加方法,它应该是一个包含所需方法的对象:
const app = Vue.createApp({data() {return { count: 4 }},methods: {increment() {// `this` 指向该组件实例this.count++}}})const vm = app.mount('#app')console.log(vm.count) // => 4vm.increment()console.log(vm.count) // => 5
