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 的 v-model用法实例
Nov 23 Vue.js
vue 基于abstract 路由模式 实现页面内嵌的示例代码
Dec 14 Vue.js
Vue 集成 PDF.js 实现 PDF 预览和添加水印的步骤
Jan 22 Vue.js
基于vue-simple-uploader封装文件分片上传、秒传及断点续传的全局上传插件功能
Feb 23 Vue.js
vue-cli中实现响应式布局的方法
Mar 02 Vue.js
Vue详细的入门笔记
May 10 Vue.js
vue如何批量引入组件、注册和使用详解
May 12 Vue.js
Vue接口封装的完整步骤记录
May 14 Vue.js
Vue监视数据的原理详解
Feb 24 Vue.js
vue-cil之axios的二次封装与proxy反向代理使用说明
Apr 07 Vue.js
vue router 动态路由清除方式
May 25 Vue.js
Vue 打包后相对路径的引用问题
Jun 05 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 mssql 分页SQL语句优化 持续影响
2009/04/26 PHP
PHP 时间转换Unix时间戳代码
2010/01/22 PHP
js操作textarea方法集合封装(兼容IE,firefox)
2011/02/22 Javascript
javascript日期转换 时间戳转日期格式
2011/11/05 Javascript
修改js Calendar日历控件 兼容IE9/谷歌/火狐
2013/01/04 Javascript
javascript中强制执行toString()具体实现
2013/04/27 Javascript
js获得地址栏?问号后参数的方法
2013/08/08 Javascript
js、css、img等浏览器缓存问题的2种解决方案
2013/10/23 Javascript
全面解析Bootstrap表单使用方法(表单样式)
2015/11/24 Javascript
Javascript点击其他任意地方隐藏关闭DIV实例
2016/06/21 Javascript
vue.js入门教程之计算属性
2016/09/01 Javascript
vue使用代理解决请求跨域问题详解
2019/07/24 Javascript
vue+animation实现翻页动画
2020/06/29 Javascript
使用原生javascript开发计算器实例代码
2021/02/21 Javascript
[01:11:35]Liquid vs LGD 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
python中readline判断文件读取结束的方法
2014/11/08 Python
使用优化器来提升Python程序的执行效率的教程
2015/04/02 Python
python基础知识小结之集合
2015/11/25 Python
Swift 3.0在集合类数据结构上的一些新变化总结
2016/07/11 Python
VSCode下好用的Python插件及配置
2018/04/06 Python
python中map的基本用法示例
2018/09/10 Python
Python http接口自动化测试框架实现方法示例
2018/12/06 Python
Python3安装Pillow与PIL的方法
2019/04/03 Python
Jacobi迭代算法的Python实现详解
2019/06/29 Python
python3中eval函数用法使用简介
2019/08/02 Python
html5 touch事件实现触屏页面上下滑动(二)
2016/03/10 HTML / CSS
美国著名的婴儿学步鞋老品牌:Robeez
2016/08/20 全球购物
Clarks鞋法国官方网站:英国其乐鞋品牌
2018/02/11 全球购物
Brasty罗马尼亚:购买手表、香水、化妆品、珠宝
2020/04/21 全球购物
Final类有什么特点
2012/04/25 面试题
化学教师自荐信范文
2013/12/28 职场文书
中学生学雷锋活动心得体会
2014/03/10 职场文书
2016幼儿园毕业感言
2015/12/08 职场文书
军训心得体会范文(2016最新篇)
2016/01/11 职场文书
2016党风廉政建设心得体会范文
2016/01/25 职场文书
Netty客户端接入流程NioSocketChannel创建解析
2022/03/25 Java/Android