组件

组件

Vue组件的使用、数据传递、组件事件、template、动态组件、插槽slot等

2018-07-03侠课岛    初级拔高       

前端/前端必修/Vue快速入门 33     0     3936

组件的使用

    定义一个组件

    Vue.component(名称, {
        模板以及函数
    })

    Vue.component('Prise', {
        template: '<span>123</span>'
    })

组件的数据传递

    向组件传递一个已点赞数量
    向组件传递多个数据

    props: [...props]

    Vue.component('Prise', {
        props: ['like', 'dislike'],
        data: function () {
            return {
                like: this.like,
            }
        },
        template: `
                    <div>
                        <span>点赞次数{{ like }}</span>
                    </div>
                `
    })

组件的事件传递

    $emit(父组件方法, arguments)

    Vue.component('Prise', {
        props: ['like', 'dislike'],
        data: function () {
            return {
                like: this.like,
            }
        },
        template: `
                    <div>
                        <span>点赞次数{{ like }}</span>
                        <span>踩次数{{ dislike }}</span>
                        <button v-on:click="like++">Like</button>
                        <button v-on:click="$emit('report', like, 1)">Report</button>
                    </div>
                `
    })

    <Prise v-on:report="getReport" v-bind:like="preLike" v-bind:dislike="dislike" />

组件传递children

    插槽 <slot></slot>
    Vue.component('Prise', {
        props: ['like', 'dislike'],
        data: function () {
            return {
                like: this.like,
            }
        },
        template: `
                    <div>
                        <span>点赞次数{{ like }}</span>
                        <span>踩次数{{ dislike }}</span>
                        <button v-on:click="like++">Like</button>
                        <button v-on:click="$emit('report', like, 1)">Report</button>
                        <slot></slot>
                    </div>
                `
    })

    <Prise v-on:report="getReport" v-bind:like="preLike" v-bind:dislike="dislike">  
        <span>{{ dislike }}</span>
    </Prise>

动态组件

    <component v-bind:is="currentTabComponent"></component>
    currentTabComponent: 当前显示的组件名称

本教程图文或视频等内容版权归侠课岛所有,任何机构、媒体、网站或个人未经本网协议授权不得转载、转贴或以其他方式复制发布或发表。

评价

33

本课评分:
  •     非常好
难易程度:
  •     适中的
|
教程
粉丝
主页

签到有礼

已签到2天,连续签到7天即可领取7天全站VIP

  • 1
    +2 金币
  • 2
    +3 金币
  • 3
    +5 金币
  • 6
    +7 金币
  • 5
    +6 金币
  • 4
    暖心福利
    自选分类VIP ×1天
  • 7
    惊喜大礼

    自选分类VIP ×3天 +20金币
  • 持续签到 +8 金币

金币可以用来做什么?