Vue 组件反刍

## 组件

    对局部视图的封装,为了实现复用,组件有结构、样式、行为

    自定义元素。扩展原生HTML

## 组件的注册

    全局注册 Vue.component('名字',{template})

    局部注册 通过compones选项定义

    注意:组件的模板template是必选的,并且有且只有一个根元素

## 详解组件

+ 组件命名规则

    keybab-case:短横线连接单词的命名方式,使用时候采用keybab-case.

    camelCase:大驼峰命名,从首字母开始大写,[Dom操作元素]时候使用keybab-case,

        但是在字符串模板中[template]用camelCasekeybab-case均可以

        -当命名为:大驼峰时,在字符串模板中两种方式均可

        -而当命名为:keybab形式时,则只能使用kebab-case

        结论:拿捏不准:均保持keybab在使用的时候!命名名称:均支持

    Note:

        html 标签名不区分大小写!

+ 使用组件方式

    单闭合:该标签之后的所有的组件都不会被渲染。[渲染到单闭合组件为止]

    双闭合:推荐使用

+ 组件模板

1. 组件的模板template是必选的,并且有且只有一个根元素

2. 当template属性包含元素比较多情况下,可以使用template标签来定义模板,通过id来表示组件模板信息

+ 组件的data选项必须是一个函数:[为了让组件之间相互独立,每个组件维护自己的一份数据]

    维护组件的独立性

+ 插槽slot

    组件的一块HTML模板,相当于占位符,以后显示不显示内容由父组件决定!

        v-slot can only be used on components or <template>.

        v-slot简写形式:#[name 的值]

+ 组件间的数据通信

    父->子

        1 在父组件中通过给子组件增加属性+值[父组件数据]方式传递数据

        2 在子组件中通过props选项:数组得形式显示得声明

            "props": expected an Array or an Object!

        注意:

            - props中声明得属性和data一样,是响应式数据,也会挂载组件实例中,可控制视图渲染

            - 父组件传递的属性名是

                -kebab-case格式,props中可以通过camelCase或PascalCase

                -如果是camelCase,则浏览器会将其解析为全部小写!

            - props选项可以进行数据校验:

                1 指定属性的类型,默认情况下全部按照String类型处理;

                    假如想使用值本身,固有类型则需要使用v-bind:绑定

                    还支持校验数据是否是规定得类型

                        -Invalid prop: custom validator check failed for prop "title".

                2 class和样式合并

                3 vue的单向数据流

                    加载渲染过程:父beforeCreated -> 父created -> 父beforeMount -> 子beforeCreated -> 子created -> 子beforeMount

                                        ->子mounted ->父mounted

                    子组件更新过程:父beforeUpdate -> 子beforeUpdate -> 子updated -> 父updated

    子->父

        1 子组件调用$emit()方法发布一个事件

        2 父组件监听事件

## note

    根实例:根组件

    每一个组件都可以视为一个VueComponent实例,VueComponent继承Vue,所以组件能够与new Vue接受相同地选项:如datacomputedmethods等

    组件可以复用

原文地址:https://www.cnblogs.com/macro-renzhansheng/p/13386813.html