蝙蝠岛资源网 Design By www.hbtsch.com
最近面试,被问到一个题目,vue做一个按钮组件;
当时只是说了一下思路,回来就附上代码。
解决思路:
- 通过父子组件通讯($refs 和 props)
- props接受参数, $refs调用子组件的方法
- 来达到点击提交改变按钮状态,如果不成功则取消按钮状态
在src/components/ 下建一个button.vue
<template>
<!-- use plane -->
<!-- 传入bgColor改变按钮背景色 -->
<!-- state切换button的状态 调用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: '确认',
}
}
}
},
methods: {
confirm(){
this.text += '...'
this.state = true
//这里是激活父组件的事件,因为子组件是不会冒泡到父组件上的,必须手动调用$emit
//相对应父组件要在调用该组件的时候,将其挂载到上面
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>
在页面中调用:
<template>
<div class="btn-box">
<Btn
:btnData="{text: '确认注册'}"
<!--这里就要挂载$emit调用的事件 @confirm="想要调用事件的名字"-->
@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>
在这里,要注意一些细节:
1. button组件形成之后和其它div元素的间距,如果是在组件内定死是很难复用的。
2. 在复用的时候,在父组件中是改变不了子组件的样式的,如果要强制更改,单独写一个并去掉scoped。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
标签:
vue,按钮组件,vue,按钮
蝙蝠岛资源网 Design By www.hbtsch.com
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
蝙蝠岛资源网 Design By www.hbtsch.com
暂无vue 开发一个按钮组件的示例代码的评论...
RTX 5090要首发 性能要翻倍!三星展示GDDR7显存
三星在GTC上展示了专为下一代游戏GPU设计的GDDR7内存。
首次推出的GDDR7内存模块密度为16GB,每个模块容量为2GB。其速度预设为32 Gbps(PAM3),但也可以降至28 Gbps,以提高产量和初始阶段的整体性能和成本效益。
据三星表示,GDDR7内存的能效将提高20%,同时工作电压仅为1.1V,低于标准的1.2V。通过采用更新的封装材料和优化的电路设计,使得在高速运行时的发热量降低,GDDR7的热阻比GDDR6降低了70%。
更新日志
2025年10月25日
2025年10月25日
- 小骆驼-《草原狼2(蓝光CD)》[原抓WAV+CUE]
- 群星《欢迎来到我身边 电影原声专辑》[320K/MP3][105.02MB]
- 群星《欢迎来到我身边 电影原声专辑》[FLAC/分轨][480.9MB]
- 雷婷《梦里蓝天HQⅡ》 2023头版限量编号低速原抓[WAV+CUE][463M]
- 群星《2024好听新歌42》AI调整音效【WAV分轨】
- 王思雨-《思念陪着鸿雁飞》WAV
- 王思雨《喜马拉雅HQ》头版限量编号[WAV+CUE]
- 李健《无时无刻》[WAV+CUE][590M]
- 陈奕迅《酝酿》[WAV分轨][502M]
- 卓依婷《化蝶》2CD[WAV+CUE][1.1G]
- 群星《吉他王(黑胶CD)》[WAV+CUE]
- 齐秦《穿乐(穿越)》[WAV+CUE]
- 发烧珍品《数位CD音响测试-动向效果(九)》【WAV+CUE】
- 邝美云《邝美云精装歌集》[DSF][1.6G]
- 吕方《爱一回伤一回》[WAV+CUE][454M]