vue 開發(fā)一個(gè)按鈕組件的示例代碼
最近面試,被問到一個(gè)題目,vue做一個(gè)按鈕組件;
當(dāng)時(shí)只是說了一下思路,回來就附上代碼。
解決思路:
- 通過父子組件通訊($refs 和 props)
- props接受參數(shù), $refs調(diào)用子組件的方法
- 來達(dá)到點(diǎn)擊提交改變按鈕狀態(tài),如果不成功則取消按鈕狀態(tài)
在src/components/ 下建一個(gè)button.vue
<template> <!-- use plane --> <!-- 傳入bgColor改變按鈕背景色 --> <!-- state切換button的狀態(tài) 調(diào)用cancel()可以切換 --> <!-- text為按鈕文字 --> <div class="container"> <button @click="confirm" :disabled="state" class="confirm" :style="{background: btnData.bgColor}" >{{text}}</button> </div> </template> <script> export default { data(){ return { text: this.btnData.text, state: false, } }, props: { btnData: { types: Array, default() { return { text: '確認(rèn)', } } } }, methods: { confirm(){ this.text += '...' this.state = true //這里是激活父組件的事件,因?yàn)樽咏M件是不會冒泡到父組件上的,必須手動(dòng)調(diào)用$emit //相對應(yīng)父組件要在調(diào)用該組件的時(shí)候,將其掛載到上面 this.$emit("confirm") }, cancel(){ this.text = this.btnData.text this.state = false } } } </script> <style lang="less" scoped> .confirm { border: none; color: #fff; width: 100%; padding: 1rem 0; border-radius: 4px; font-size: 1.6rem; background: #5da1fd; &:focus { outline: none; } } </style>
在頁面中調(diào)用:
<template> <div class="btn-box"> <Btn :btnData="{text: '確認(rèn)注冊'}" <!--這里就要掛載$emit調(diào)用的事件 @confirm="想要調(diào)用事件的名字"--> @confirm="confirm" ref="btn" ></Btn> </div> </template> <script> import Btn from '@/components/button' export default { components: { Btn }, methods: { confirm(){ if(!this.companyName){ this.$toast("公司名不能為空") this.$refs.btn.cancel() } } } </script>
在這里,要注意一些細(xì)節(jié):
1. button組件形成之后和其它div元素的間距,如果是在組件內(nèi)定死是很難復(fù)用的。
2. 在復(fù)用的時(shí)候,在父組件中是改變不了子組件的樣式的,如果要強(qiáng)制更改,單獨(dú)寫一個(gè)并去掉scoped。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
在Vue項(xiàng)目中使用d3.js的實(shí)例代碼
這篇文章主要介紹了在Vue項(xiàng)目中使用d3.js的實(shí)例代碼,非常不錯(cuò),具有參考借鑒價(jià)值價(jià)值,需要的朋友可以參考下2018-05-05Vue3配置路由ERROR in [eslint]報(bào)錯(cuò)問題及解決
這篇文章主要介紹了Vue3配置路由ERROR in [eslint]報(bào)錯(cuò)問題及解決方案,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-10-10Vue中的el-date-picker時(shí)間選擇器的使用實(shí)例詳解
el-date-picker是Element UI框架中提供的日期選擇器組件,它支持單個(gè)日期、日期范圍、時(shí)間、日期時(shí)間等多種選擇方式,本文給大家介紹Vue中的el-date-picker時(shí)間選擇器的使用,感興趣的朋友一起看看吧2023-10-10element?el-tooltip實(shí)現(xiàn)自定義修改樣式
本文主要介紹了element?el-tooltip實(shí)現(xiàn)自定義修改樣式,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-07-07Vue-Jest 自動(dòng)化測試基礎(chǔ)配置詳解
目前開發(fā)大型應(yīng)用,測試是一個(gè)非常重要的環(huán)節(jié),而在 Vue 項(xiàng)目中做單元測試可以用 Jest,本文主要介紹了Vue-Jest 自動(dòng)化測試,感興趣的可以了解一下2021-07-07Vue中的ref作用詳解(實(shí)現(xiàn)DOM的聯(lián)動(dòng)操作)
這篇文章主要介紹了Vue中的ref作用詳解(實(shí)現(xiàn)DOM的聯(lián)動(dòng)操作),需要的朋友可以參考下2017-08-08vue 監(jiān)聽 Treeselect 選擇項(xiàng)的改變操作
這篇文章主要介紹了vue 監(jiān)聽 Treeselect 選擇項(xiàng)的改變操作,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-08-08