vue-like(點(diǎn)贊)組件的封裝

寫仿豆瓣的時(shí)候經(jīng)常會(huì)遇到一個(gè)點(diǎn)贊的按鈕,點(diǎn)一下贊了 它的樣式也改變了,然后再點(diǎn)一下還可以取消。于是打算封裝一個(gè)點(diǎn)贊的組件


剛開始封裝的時(shí)候?qū)⒚看吸c(diǎn)贊和取消點(diǎn)贊的這個(gè)邏輯寫到了組件內(nèi)部,后來再看感覺很不合理,所以重新重構(gòu)了一下。

template:

<div id="like" :class="like?'active':''" @click="change">

<span class="img"></span><span>{{count}}</span>

</div>

img是顯示的小心心的點(diǎn)贊圖標(biāo),后面是點(diǎn)贊數(shù)量,因?yàn)橄氲接行c(diǎn)贊按鈕可能沒有數(shù)量,所以count設(shè)置為非必填項(xiàng)。

style:

#like{

width: 100px;

height: 30px;

line-height: 30px;

display: flex;

align-items:center;

justify-content:center;

font-size: 15px;

margin: 30px auto;

color: #42bd56;

border: 1px solid #42bd56;

}

#like .img{

margin-right: 4px;

width: 20px;

height: 20px;

background:url(https://img3.doubanio.com/f/talion/c689ab2369da387f2cb0d4da4a22614d7f048bf9/pics/card/ic_heart_green.svg) no-repeat;

}

#like.active{

color: #333;

border: 1px solid #bfbfbf;

}

#like.active .img{

background-image: url(https://img3.doubanio.com/f/talion/0129352875382ff0544020161709c2ae9b00c737/pics/card/ic_heart_red.svg);

}

樣式當(dāng)時(shí)寫的是比較隨意的,點(diǎn)贊的小圖標(biāo)是直接用的豆瓣的圖片。。

script:

分開說吧

props?

props:{

count:{

type: Number,

required: false,

},

like:{

type:Boolean,

required:true,

default:false

}

}

因?yàn)閏ount可能沒有,所以非必填,like涉及到顯示效果,給他設(shè)置了個(gè)默認(rèn)值。

正常來說其實(shí)這個(gè)組件中是不需要寫邏輯的,但是這里有個(gè)問題就是vue2.0中給自定義組件設(shè)置原生事件一定要加native修飾符,那如果使用的時(shí)候父組件忘記了呢?所以這里給這個(gè)組件設(shè)定了個(gè)點(diǎn)擊事件

這個(gè)change方法里其實(shí)只做了一件事

change:function () {

this.$emit('click');

}

就是觸發(fā)父組件傳遞進(jìn)來的方法。

所以父組件如果這樣使用

<div class="like">

<Like-it @click="changeValue" count="15" :like="like"></Like-it>

</div>

也不會(huì)有任何問題了。

當(dāng)然如果確??梢栽诟附M件中使用@click.native來觸發(fā)原生事件,則組件的上面的操作都可以省略了。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML標(biāo)準(zhǔn)。 注意:講述HT...
    kismetajun閱讀 28,809評(píng)論 1 45
  • 1. 前言 前端圈有個(gè)“?!保涸诿嬖嚂r(shí),問個(gè)css的position屬性能刷掉一半人,其中不乏工作四五年的同學(xué)。在...
    YjWorld閱讀 4,912評(píng)論 5 15
  • 在學(xué)習(xí)weex的過程中看到了常用標(biāo)簽相關(guān)的內(nèi)容,為了自己以后能夠快速查閱特整理出此文檔。 a 簡(jiǎn)介組件定義了指向某...
    TyroneTang閱讀 4,839評(píng)論 1 3
  • 前端開發(fā)面試題 <a name='preface'>前言</a> 只看問題點(diǎn)這里 看全部問題和答案點(diǎn)這里 本文由我...
    自you是敏感詞閱讀 904評(píng)論 0 3
  • 21
    暢哥哥呀閱讀 156評(píng)論 0 4

友情鏈接更多精彩內(nèi)容