函数式组件是无状态,他无法实例化,没有任何的生命周期和方法,创建函数式组件也很简单,只需要在模板添加’functional’声明即可。一般适合只依赖于外部函数的变化而变化的组件,因其轻量,渲染性能也会有所提高。
组件需要的一切都是通过’context’参数传递。他是一个上下文对象,具体属性查看文档。这里’props’是一个包含所有绑定属性的对象。
函数式组件:
<!-- List.vue -->
<template>
<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>
<script>
import List from '@/components/List.vue'
export default {
component: {
List,
},
data() {
return {
List: [
{
title: 'title1',
content: 'content1',
},
],
currentItem: '',
}
},
}
</script>