Vue——自定义组件 & 自定义事件$emit & 插槽slot

如题所述

第1个回答  2022-07-27

局部注册的组件,只能在当前Vue实例中使用,并且在其子组件中不可用。
components 选项中定义局部组件。每个组件就是一个小型的Vue实例,它里面除了不能设置el选项,其他选项它都有。
组件名称: 自定义,可以使用驼峰命名方式或者短横线的命名方式,但是需要注意的是如果应用到DOM中,就只能用短横线命名的方式,否则就会报错。注意组件的名称不要跟原生html元素重名。
template选项: 定义组件的模板。模板中必须包含一个根标签。
props选项: 定义组件标签上的属性。驼峰命名法的 prop 名(postTitle)需要使用其等价的短横线分隔命名法(post-title)命名。注意:props是只读的,不能修改( 解决办法: 在data中对props接收到的数据进行中转)。

data: 定义组件的数据。注意:Vue实例的data选项可以是一个对象,也可以是一个方法,由该方法返回一个对象。 但是在组件中,data选项必须是一个方法,由该方法返回一个对象。因为组件可能会使用很多次,如果data选项是对象的话,会导致多个组件使用了同一份数据。

全局注册的组件可以用在任何新创建的 Vue 根实例 (new Vue) 的模板中。
使用 Vue.component 来创建全局组件。Vue.component的第一个参数就是组件名。

$emit()用于触发自定义事件。注意:事件名称中不能采用大写字母。

效果:

效果:

slot 用于在组件的内部定义插槽,组件标签之间的所有html内容,会在插槽所在位置呈现。

效果:

大家正在搜