Vue $attrs & inheritAttr实现button禁用效果案例


Posted in Vue.js onDecember 07, 2020

components/Button.vue

<template>
 <div>
  <button :disabled="$attrs.disabled">点击</button>
 </div>
</template>
 
<script>
 export default {
   inheritAttrs: false,
 }
</script>
 
<style scoped> 
</style>

App.vue

<template>
 <div id="app">
 <Parent></Parent>
 <Button disabled></Button>
 </div>
</template>

<script>
import Parent from './components/Parent'
import Button from './components/Button';
 
export default {
 name: 'App',
 components: {
 Parent,
 Button
 }
}
</script>
<style>
#app {
 font-family: Avenir, Helvetica, Arial, sans-serif;
 -webkit-font-smoothing: antialiased;
 -moz-osx-font-smoothing: grayscale;
 text-align: center;
 color: #2c3e50;
 margin-top: 60px;
}
</style>

效果截图1-inheritAttrs默认true:

Vue $attrs &amp; inheritAttr实现button禁用效果案例

效果截图2-inheritAttrs=false:

Vue $attrs &amp; inheritAttr实现button禁用效果案例

补充知识:vue中使用inheritAttrs实现组件的扩展性

1、首先我们创建一个input组件

<template>
  <div class="inputCom-wrap">
    <input v-bind="$attrs" />
  </div>
</template>
 
<script lang="ts">
import { defineComponent } from 'vue'
 
export default defineComponent({
  inheritAttrs:false,//不希望根直接继承特性,而是使用$attrs自定义继承,当前组件的根就是inputCom-wrap
  setup () {
    return {}
  }
})
</script>
 
<style scoped> 
</style>

2、使用组件的时候,随便增加一些属性,如

<inputCom type="text" class="input-a"></inputCom>

<inputCom type="password" class="input-b"></inputCom>

3、查看最终的渲染结果为(与props不会冲突)

Vue $attrs &amp; inheritAttr实现button禁用效果案例

以上这篇Vue $attrs & inheritAttr实现button禁用效果案例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Vue.js 相关文章推荐
Vue如何循环提取对象数组中的值
Nov 18 Vue.js
vue 插槽简介及使用示例
Nov 19 Vue.js
深入了解Vue3模板编译原理
Nov 19 Vue.js
vue实现广告栏上下滚动效果
Nov 26 Vue.js
vue 数据操作相关总结
Dec 17 Vue.js
vue绑定class的三种方法
Dec 24 Vue.js
vue实现验证用户名是否可用
Jan 20 Vue.js
Vue中的nextTick作用和几个简单的使用场景
Jan 25 Vue.js
关于Vue Router的10条高级技巧总结
May 06 Vue.js
vue-cli4.5.x快速搭建项目
May 30 Vue.js
vue实现锚点定位功能
Jun 29 Vue.js
el-table-column 内容不自动换行的解决方法
Aug 14 Vue.js
vuex Module将 store 分割成模块的操作
Dec 07 #Vue.js
浅谈Vue使用Elementui修改默认的最快方法
Dec 05 #Vue.js
vue+element_ui上传文件,并传递额外参数操作
Dec 05 #Vue.js
解决vue下载后台传过来的乱码流的问题
Dec 05 #Vue.js
解决Vue-cli3没有vue.config.js文件夹及配置vue项目域名的问题
Dec 04 #Vue.js
vue基于Echarts的拖拽数据可视化功能实现
Dec 04 #Vue.js
vue使用echarts图表自适应的几种解决方案
Dec 04 #Vue.js
You might like
社区(php&amp;&amp;mysql)一
2006/10/09 PHP
PHP垃圾回收机制引用计数器概念分析
2013/06/24 PHP
php封装的验证码类分享
2017/02/26 PHP
基于win2003虚拟机中apache服务器的访问
2017/08/01 PHP
PHP实现将base64编码字符串转换成图片示例
2018/06/22 PHP
PHP单例模式数据库连接类与页面静态化实现方法
2019/03/20 PHP
js写一个弹出层并锁屏效果实现代码
2012/12/07 Javascript
随鼠标移动的时钟非常漂亮遗憾的是只支持IE
2014/08/12 Javascript
JavaScript中的条件判断语句使用详解
2015/06/03 Javascript
javascript鼠标右键菜单自定义效果
2020/12/08 Javascript
Vue + Vue-router 同名路由切换数据不更新的方法
2017/11/20 Javascript
使用Ajax和Jquery配合数据库实现下拉框的二级联动的示例
2018/01/25 jQuery
JS实现的邮箱提示补全效果示例
2018/01/30 Javascript
轻松学习JavaScript函数中的 Rest 参数
2019/05/30 Javascript
原生js无缝轮播插件使用详解
2020/03/09 Javascript
微信小游戏中three.js离屏画布的示例代码
2020/10/12 Javascript
Vue select 绑定动态变量的实例讲解
2020/10/22 Javascript
[57:16]2014 DOTA2华西杯精英邀请赛 5 25 LGD VS VG第二场
2014/05/26 DOTA
Python SQLite3数据库操作类分享
2014/06/10 Python
改进Django中的表单的简单方法
2015/07/17 Python
使用Python的Django框架结合jQuery实现AJAX购物车页面
2016/04/11 Python
基于python的字节编译详解
2017/09/20 Python
PyQt5实现类似别踩白块游戏
2019/01/24 Python
基于python生成器封装的协程类
2019/03/20 Python
如何在python中实现随机选择
2019/11/02 Python
pytorch torch.nn.AdaptiveAvgPool2d()自适应平均池化函数详解
2020/01/03 Python
利用python实现凯撒密码加解密功能
2020/03/31 Python
基于python检查SSL证书到期情况代码实例
2020/04/04 Python
基于python实现简单网页服务器代码实例
2020/09/14 Python
Python 列表反转显示的四种方法
2020/11/16 Python
临床医师专业个人自我评价范文
2013/11/07 职场文书
信息合作协议书
2014/10/09 职场文书
教师求职自荐信
2015/03/26 职场文书
物业公司管理制度
2015/08/05 职场文书
css3实现的加载动画效果
2021/04/07 HTML / CSS
Redis 常见使用场景
2021/08/30 Redis