VUE 巧用$attrs和inheritAttrs提高组件的可扩展性
前言
在平时创建组件时,一般使用的是利用props
传值,然后通过传入的值再赋给标签的方式,来控制组件里的,这种方法在使用时的可扩展性不大,很难通过外部来动态的往组件内部添加或者修改标签属性。
【VUE 巧用$attrs和inheritAttrs提高组件的可扩展性】这个时候,就可以使用$attrs
和inheritAttrs
来增加组件的可扩展性
步骤
下面以自己封装的myInput
组件来举例
这里使用div包裹是为了里面可以添加更多的内容
当需要在一个登录页面上,使用这个
myInput
组件,一个输入文字,一个输入密码,这个时候,就想在外部直接设置type
来控制myInput
组件中的input
标签。
但是如果我们直接在
myInput
组件上直接写type
属性时,就会发现,type
属性直接被传到了myInput
组件的根元素div
上,并不会设置到input
的标签之上。//运行结果
在这个时候,就需要设置一个特殊的属性
inheritAttrs=false
(官方定义入口),这个属性的设置作用是禁止传入的属性添加到组件的根元素上。那禁止传入的值添加到根元素后,那就需要将传入的值给到
input
的标签上,这时就可以通过给input
的标签上设置一个v-bind=$attrs
,来将传入的值添加到input
的标签中。这个$attrs
(官方定义入口)在传入的组件的属性中,除了props中定义了的属性外,其他的全部包含
通过设置这两个属性,就实现了配置
input
的标签的功能。推荐阅读
- 防御式CSS是什么(这几点属性重点防御!)
- Vite + Vue3 初体验 —— Vue3 篇
- vue移动端下拉刷新和上拉加载组件,体积小运行快
- Vue中将json数据导出为Excel表格
- [Vue] mounted阶段获取不到dom的原因及解决方法
- h5通过ping++集成几种支付
- vuex在F5时数据丢失的两种办法
- 获取当前页面显示的el-dialog元素
- 滚动定位到指定位置