element-ui 二次封装系列- button

本文介绍了如何基于Vue.js的UI框架Element UI对Button组件进行二次封装,以解决重复点击导致的接口请求问题。通过封装,实现了自动loading功能,减少了代码重复。封装后的组件在点击时自动显示loading状态,并在请求完成时自动关闭,简化了业务组件中的处理逻辑。此外,还讲解了如何利用`v-bind="$attrs"`保留并继承所有父组件的属性,保持与原组件的兼容性。

elementUI是一个vue.js的ui框架, 在做后台管理系统等方面非常出色,然而面对重复的后台管理系统,大量重复的代码, 这里我们将使用elemnt ui做二次封装,以扩展element ui的属性 来简化代码.

本文以 el-button为例el-button是最简单的组件了,所有操作都需要用到它, 它仅对外提供click事件.
在平时工作中,我们经常遇到一个 重复点击的问题,点太快了接口没有返回会导致多次重复请求,这时我们会想到使用防抖或节流,或者使用el-buttonloading属性, 如果使用loading 属性, 通常 我们会在vuedata中定义一个loading变量,然后调用ajax之前将loading设置为true, ajax返回后将loading设置为false. 这是比较合理的办法,但是如果一个系统非常多这种情况, 那我们需要每一个页面都去定义一个loading变量,作为一个合格的程序员,我们当然想不要写这么多重复的代码,这时候就需要对el-button做二次封装了,
如下代码,我们封装一个pl-button组件

<el-button
  v-bind="$attrs"
  :loading="loadingStatus"
  @click="handleClick"
>
<slot/>
</el-button>
<script>
export default {
    
    
  name: 'pl-button',
Vue2项目中使用Element-UI进行二次封装是为了更好地满足项目需求,提升开发效率和代码复用性。二次封装通常包括以下几个步骤: 1. **创建自定义组件**: - 在`src/components`目录下创建一个新的文件夹,例如`MyElementUI`。 - 在该文件夹下创建需要封装的组件,例如`MyButton.vue`。 2. **引入Element-UI组件**: - 在自定义组件中引入Element-UI的组件。 ```vue <template> <el-button :type="type" :size="size" @click="handleClick"> <slot></slot> </el-button> </template> <script> import { Button } from 'element-ui'; export default { name: 'MyButton', components: { 'el-button': Button }, props: { type: { type: String, default: 'primary' }, size: { type: String, default: 'medium' } }, methods: { handleClick() { this.$emit('click'); } } }; </script> ``` 3. **全局注册组件**: - 在`src/main.js`中全局注册自定义组件。 ```javascript import Vue from 'vue'; import App from './App.vue'; import MyButton from './components/MyElementUI/MyButton.vue'; Vue.component('MyButton', MyButton); new Vue({ render: h => h(App), }).$mount('#app'); ``` 4. **使用自定义组件**: - 在需要使用自定义组件的地方,直接使用自定义的组件标签。 ```vue <template> <div> <MyButton @click="handleButtonClick">点击我</MyButton> </div> </template> <script> export default { methods: { handleButtonClick() { console.log('按钮被点击了'); } } }; </script> ``` 通过这种方式,可以对Element-UI的组件进行二次封装,添加自定义的属性、方法和样式,从而更好地满足项目的具体需求。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值