vue.js - 将道具/属性传递给自定义组件内的嵌套组件
问题描述
我想知道将许多道具传递给包装在外部组件中的组件的最佳方法是什么,例如
代码
<template>
<div>
<v-text-field
:error="summonerNameError"
:loading="summonerNameLoading"
@input="onSummonerNameChange($event)"
label="Nom Invocateur"
v-model="summonerName"
:solo="inputSolo"
:flat="inputFlat"
></v-text-field>
</div>
</template>
在这里,如果我想从外部将多个属性传递给 v-text-field,我应该只是在上创建一个道具component
并将其传递给嵌套v-text-field
,还是有更好的方法?
解决方案
这也是我的一个问题,我在Chris Fritz的这个非常有趣的视频中找到了解决方案:
他称之为透明包装:
所以有两件事要处理,监听器和属性:
对于听众:
<v-text-field v-on="$listeners"></v-text-field>
对于属性,它只是有点棘手。默认情况下,Vue 将所有属性传递给组件的根标签。在这里,您的根标签是一个 div,但您想将属性传递给您的v-text-field
组件。你需要在inheritsAttrs: false
你的 Vue 组件中使用:
export default {
inheritsAttrs: false
...
}
v-text-field
然后在您的组件上使用相同的技术,方法是:
<v-text-field v-bind="$attrs"></v-text-field>
然后你应该有类似的东西
<v-text-field v-on="$listeners" v-bind="$attrs"></v-text-field>
然后你应该能够添加任何你喜欢的东西。希望这可以帮助!
PS:视频从21:48开始讲这个技巧
希望这可以帮助!
推荐阅读
- visual-studio-code - VS Code Arduino-Extension 标记错误
- mysql - 如何在html页面上显示nodejs mysql结果?
- c# - 是否有将 json 过滤器转换为 Lambda 表达式的 nuget 包?- MongoDB 驱动程序
- node.js - Nodejs + Postgres:提供表名作为查询参数
- java - 在java 8中查找给定数字的数字总和?
- ubuntu - 我们如何在 ubuntu 20.04 终端中找到 python 解释器路径?
- plsql - 使用 PL/SQL 检查多个条件
- c# - 使用 Memory.dll 或只是做任何事情时,我的 Visual Studio 上出现奇怪的错误
- gtkmm - 如何手动重绘 gtkmm 中的树库(扩展器不正确)?
- node.js - 在 sequelize node express 中创建翻译表