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:
效果截图2-inheritAttrs=false:
补充知识: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 & inheritAttr实现button禁用效果案例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持站长技术。
端点路由(Endpoint Routing)最早出现在ASP.NET Core2.2,在ASP.NET Core3.0提升...
Access 连接字符串 strConnect = “Provider=Microsoft.Jet.OLEDB.4.0;Data Sour...
LVS-DRKeepalived 配置步骤 准备工作 调度器上安装Keepalived 调度主机上做lvs策...
购物车是电子商务网站中不可缺少的组成部分,但目前大多数购物车只能作为一个顾...
最近有朋友向笔者反馈说,电脑玩游戏很不稳定,玩了一会儿后就黑屏甚至死机,电...
关于开源工具与专有工具的争论早已不是什么新鲜事。但在AIOps工具方面,还有其他...
经过40多分钟的一面我的暑假实习计划彻底泡汤不过我也没气馁至少我知道了接下来...
一元线性模型的中位数回归 一、算法目的 二、算法推导 三、实际案例与python编程...
我是 艺博东 一个思科出身专注于华为的网工。 文章目录 组网拓扑 可以用到的技术...
目录 第一章 迭代器模式介绍 第二章 迭代器模式实现 2.1、抽象迭代器 2.2、具体...