我希望不用硬编码道具,而只是将任意数量和类型的道具从父母传递给孙子。
我尝试过:
<FileListRenderless v-bind="$props" v-on="$listeners">
<!-- <FileListRenderless :attachments="attachments" :isEditMode="isEditMode" :type="type"> -->
这很好用,但是我仍然必须在子组件的props对象中定义它们。还要如何抽象分配给子组件的props对象?
答案 0 :(得分:2)
如果您不想在子组件中显式定义道具,则应将道具作为一个对象传递,例如:
<FileListRenderless :my-props="$props" v-on="$listeners">
这会绕过内置的prop验证。您可以对侦听器执行相同的操作,只需将它们手动附加到组件安装上即可。但是,如果需要这样做,我建议您重新考虑设计。如果您拥有大量可能的道具,那么您可能想找到一种方法来抽象某些逻辑,制作工厂组件,使用指令或使用混合。 Vue工具箱中有很多工具。
答案 1 :(得分:0)
在没有更多上下文的情况下,我建议使用v-bind="$props"
传递所有道具。完成操作。
您也可以使用bus或vuex,但是它们会创建全局级别的变量,但这并不总是理想的。