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 24 Vue.js
vue下拉刷新组件的开发及slot的使用详解
Dec 23 Vue.js
vue自定义组件实现双向绑定
Jan 13 Vue.js
Vue包大小优化的实现(从1.72M到94K)
Feb 18 Vue.js
vue完美实现el-table列宽自适应
May 08 Vue.js
vue实现可拖拽的dialog弹框
May 13 Vue.js
Vue如何实现组件间通信
May 15 Vue.js
vue实现同时设置多个倒计时
May 20 Vue.js
Vue实现tab导航栏并支持左右滑动功能
Jun 28 Vue.js
Vue3如何理解ref toRef和toRefs的区别
Feb 18 Vue.js
VUE递归树形实现多级列表
Jul 15 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实现的微信红包算法分析(非官方)
2015/09/25 PHP
Laravel框架中VerifyCsrfToken报错问题的解决
2017/08/30 PHP
详解Laravel设置多态关系模型别名的方式
2019/10/17 PHP
分享使用AngularJS创建应用的5个框架
2015/12/05 Javascript
Easyui Tree获取当前选择节点的所有顶级父节点
2017/02/14 Javascript
JavaScript如何一次性展示几万条数据
2017/03/30 Javascript
ComboBox(下拉列表框)通过url加载调用远程数据的方法
2017/08/06 Javascript
使用mint-ui实现省市区三级联动效果的示例代码
2018/02/09 Javascript
Vue父组件调用子组件事件方法
2018/02/23 Javascript
React SSR样式及SEO的实践
2018/10/22 Javascript
Vue使用mixin分发组件的可复用功能
2019/09/01 Javascript
Python制作简单的网页爬虫
2015/11/22 Python
通过Python爬虫代理IP快速增加博客阅读量
2016/12/14 Python
不可错过的十本Python好书
2017/07/06 Python
Python语言描述最大连续子序列和
2017/12/05 Python
Python判断telnet通不通的实例
2019/01/26 Python
python性能测量工具cProfile使用解析
2019/09/26 Python
Python不支持 i ++ 语法的原因解析
2020/07/22 Python
Python+Opencv实现把图片、视频互转的示例
2020/12/17 Python
美国电子产品主要品牌的授权在线零售商:DataVision
2019/03/23 全球购物
您附近的水疗和健康场所:Spafinder(美国)
2019/07/05 全球购物
美国在线艺术商店:HandmadePiece
2020/11/06 全球购物
不用游标的SQL语句有哪些
2012/09/07 面试题
装饰活动策划方案
2014/02/11 职场文书
运动会通讯稿150字
2014/02/15 职场文书
节约用水倡议书
2014/04/16 职场文书
党风廉设责任书
2014/04/16 职场文书
优秀班集体先进事迹材料
2014/05/28 职场文书
乡党委干部党的群众路线教育实践活动个人对照检查材料思想汇报
2014/10/01 职场文书
2014年工程工作总结
2014/11/25 职场文书
感谢信的格式
2015/01/21 职场文书
导游词300字
2015/02/13 职场文书
幼儿园大班开学寄语(2015秋季)
2015/05/27 职场文书
婚育证明格式
2015/06/17 职场文书
2019个人年度目标制定攻略!
2019/07/12 职场文书
Java 关于String字符串原理上的问题
2022/04/07 Java/Android