如何在Vue中将道具从父母传递给孙子

时间:2018-09-28 15:21:49

标签: vue.js vuejs2 vue-component

我希望不用硬编码道具,而只是将任意数量和类型的道具从父母传递给孙子。

我尝试过:

<FileListRenderless v-bind="$props" v-on="$listeners">
<!-- <FileListRenderless :attachments="attachments" :isEditMode="isEditMode" :type="type"> -->

这很好用,但是我仍然必须在子组件的props对象中定义它们。还要如何抽象分配给子组件的props对象?

2 个答案:

答案 0 :(得分:2)

如果您不想在子组件中显式定义道具,则应将道具作为一个对象传递,例如:

<FileListRenderless :my-props="$props" v-on="$listeners">

这会绕过内置的prop验证。您可以对侦听器执行相同的操作,只需将它们手动附加到组件安装上即可。但是,如果需要这样做,我建议您重新考虑设计。如果您拥有大量可能的道具,那么您可能想找到一种方法来抽象某些逻辑,制作工厂组件,使用指令或使用混合。 Vue工具箱中有很多工具。

答案 1 :(得分:0)

在没有更多上下文的情况下,我建议使用v-bind="$props"传递所有道具。完成操作。

您也可以使用bus或vuex,但是它们会创建全局级别的变量,但这并不总是理想的。