【可爱多vue】初探神奇的组件 @~@

据说vue最伟大的功能就是组件啦~

我就是把官网的demo自己小练习一下,然后跟着imooc学习学习,做个笔记

开始吧!~


1.1全局组件

要注册一个全局组件,你可以使用Vue.component(tagName, options)。

Vue.component('my-header',

{template:'<p>this is my header</p>'

'})

new Vue({

el: '#app',

components:{

'my-header':myHeader

}

})

1.2局部组件

首先在根组件注册

new Vue({

el: '#app',

components:{

'my-header':myHeader

}

})

在前面写

var myHeaderChild={

template:'<p>i am header child</p>'

}

var myHeader={

template:'<p><my-header-child></my-header-child></p>',

components:{

'my-header-child'myHeaderChild

}

}


注意⚠️避免组件data里直接赋值,引用赋值会影响其他组件

data里必须是函数,直接{{}}没用,看实例⬇️⬇️


根据官网的demo写个增加删除的按钮们吧~

首先注册组件

new Vue({

el: '#app',

components:{

increase,

decrease

}

})

两个子组件,data用函数

var increase={

template:<button @click="count++">{{count}}</button>

'{{count}}',

data(){return {count:0}}}

var decrease={

template:<button @click="count--">{{count}}</button>

'{{count}}',

data(){return {count:0}}}


敲可爱@~@


昨天写的,今天又忘了,于是乎,给自己写了一个header,加油~

在main.js中

注意⚠️在这个template不能删了啊,要不就不会显示啦!
啦啦啦~~~我的专属header就完成啦!



下面就是重头戏啊!组件的通信:props,emit,slot

官网的图👇

2.1 父给子传递:props

1⃣️静态props

最简单的props

Vue.component('child',{

props:['message'],

template:'<p>hello {{ message }}</p>'})

<child message="world"></child>


但其实,官网的demo就是最好的例子

app.vue是根组件,里面componnets文件里有个hello.vue

它们之间就可以通信

我们在app.vue里的<hello myword='hello world from parent'></hello>给子组件赋值

然后在hello.vue里先在export default{props:[myword]}里声明一下父组件的值,再在子组件template里{{myword}}这样就可以啦~

2⃣️动态props

父组件

<input v-model="myVal">

<hello :my-value="myVal">

记得在data里声明

data(){

return {

myVal: ' '

}}

子组件

<template>

<p>{{myValuve}}</p>

</template>


2.2 子给父传递

使用$on(eventName)监听事件

使用$emit(eventName)触发事件


举个🌰

在子组件模版中定义一个button 添加一个click事件

<button @click="emitMyEvent">emit</button>

在子组件方法指令中添加一个新方法

emitMyEvent(){

this.$emit('my-event',this.msg)

}

在父组件方法指令中定义新方法

getMyEvent(msg){

console.log('i got my event'+msg)

}

在父组件模版中

<hello @my-event="getMyEvent"></hello >


再举个🌰

我们实现两个button求和的例子,一正一负。

子组件:


<template>

<button @click="calculate" >{{count}}</button>

</template>

data(){

return {

count:0

}},

methods:{

calculate(){

this.count++,

this.$emit("calculate")//传递事件给父组件

}}

父组件引入2个子组件


<template>

<hello v-on:calculate="calcutotal"></hello>

<hello v-on:calculate="subcalcutotal"></hello>

</template>



data(){

return{

total:0

}}

methods:{

calcutotal(){

this.total++},

subcalcutotal(){

this.total--}}


可爱多vue@~@

3  slot插槽

如果我想在父组件中,给子组件添加内容要怎么呢?slot插槽来帮你!

define:混合父组件的内容与子组件自己的模板,这个过程被称为内容分发

还是刚才的🌰

如果我要给按钮前面加上标签要怎么办呢?

直接在子标签中间加入我们要加的东西

如果没有加入内容,会显示no slot


具名slot

我们可以给slot name 然后指定的去使用



第二个slot不具名,所以就显示no slot啊~

4. 动态组件

如果我有多个组件,想随时切换怎么办呢?is大法来帮你!

在父组件中声明,就可以随心切换啦~!

<p :is="current"></p>

data(){

return{

current:'Hello'

}}

keep-alive 可以缓存,避免重新渲染,加快速度


总结一下:

父组件向内传递属性--【动态属性

子组件向外发布时间

slot插槽传递模版--【具名slot

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,686评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,668评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,160评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,736评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,847评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,043评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,129评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,872评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,318评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,645评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,777评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,470评论 4 333
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,126评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,861评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,095评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,589评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,687评论 2 351

推荐阅读更多精彩内容