20200428 Vue 组件

作用:提高代码复用性
使用方法:

1、全局注册

Vue.component('tag', { template: '<div>这是一个组件</div>' })

第一个参数是组件的名称,第二个参数是一个对象,是组件的模板

全局注册的优点:所有的vue实例都可以使用
全局注册的缺点:跟全局变量一样,权限太大,容错率降低


2、局部注册

        let app = new Vue({
            el: '#app',
            data: { },
            components: {
                'my-component': {
                    template: "<h1>组件组件组件</h1>"
                }
            }
        })

3、html标签受限,使用 is 属性

vue 组件的模板在某些情况下会受到html标签的限制,比如 <table>标签中只能有 <tr> <td> <tbody> 这些元素,所以直接在 table中使用组件是无效,会被自动提取到table 外面,此时就可以使用 is属性 来挂载组件。
例如:

        <table>
            <my-component></my-component>
        </table>
这样写是无效的,这个组件会被提取到 table 标签外面
1.png
此时就可以使用 is 属性来挂载组件:
        <table>
            <tbody is="my-component"></tbody>
        </table>
2.png

4、使用组件时的注意事项

  • 使用 小写字母或小写字母加横线(-) 的形式命名组件
    例:
            components: {
                'my-component': {
                    template: "<h1>组件组件组件</h1>"
                },
            }
  • template 中的内容必须被一个 DOM元素包括
  • template 中也有 data、methods、computed
  • template 中的 data 必须是一个方法
            components: {
                'my-component': {
                    template: "<h1>组件组件组件</h1>"
                },
                'btn-component': {
                    template: '<button @click="count++">{{count}}</button>',
                    data() {
                        return {
                            count: 0
                        }
                    }
                }

5、使用 props 实现父组件向子组件传递数据

  • 在组件中使用 props 来从父组件中接收参数,在 props 中定义的属性,都可以在组件中直接使用。
  • props 中的数据来自父级,而组件中 data return 的数据就是组件自己的数据,两种情况的作用域就是组件本身,可以在 template、computed 、methods 中直接使用。
  • props 的值有两种,一种是字符串数组,一种是对象
  • 可以使用 v-bind 来动态绑定父组件传递过来的内容
  • 子组件中,props 中的值可以直接使用 this.xxx 来获取

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 什么是组件? 组件 (Component) 是 Vue.js 最强大的功能之一。组件可以扩展 HTML 元素,封装...
    youins阅读 13,180评论 0 13
  • 此文基于官方文档,里面部分例子有改动,加上了一些自己的理解 什么是组件? 组件(Component)是 Vue.j...
    陆志均阅读 9,259评论 5 14
  • 一、了解Vue.js 1.1.1 Vue.js是什么? 简单小巧、渐进式、功能强大的技术栈 1.1.2 为什么学习...
    蔡华鹏阅读 8,691评论 0 3
  • Vue 实例 属性和方法 每个 Vue 实例都会代理其 data 对象里所有的属性:var data = { a:...
    云之外阅读 6,696评论 0 6
  • PyCharm for Mac是Mac优质的智能集成开发工具,在新版PyCharm for mac 破解版中,代码...
    三字故事_阅读 12,326评论 3 5

友情链接更多精彩内容