树:
<Parent>
<FnChild>
<Target />
</FnChild>
</Parent>
我有 $validator 提供的Parent
。在内部FnChild
,我将渲染函数与其他异步组件(Target
)一起使用。
inject: ['$validator'],
render: (h, context) => {
return h(Target, context.data, context.children)
}
注射存在于内部context.injections
,但如何Target
通过使用功能组件将其传递给?
我可以想象只将 FnChild 重写为非功能组件并provide: ['$validator']
使用FnChild
UPD:正如答案中所指出的,您不需要在功能组件内进行任何注入/提供,它就可以工作。
$validator
我的具体案例与每个组件中的 v-validate 和自动注入 new有关。在我的具体情况下,它是一个带有插槽的组件,它是覆盖的,$validator
因为我没有inject: ['$validator']
在它里面。结构很简单,如下所示:
家长
<ComponentWithSlot>
<FnChild slot='my-slot' />
</ComponentWithSlot>
Parent 注入了验证器,但 ComponentWithSlot 没有注入,因此 v-validate 为 ComponentWithSlot 重新创建了新实例,并将其提供给 FnChild 而不是$validator
来自Parent
组件。
因此,一旦我添加inject: ['$validator']
到ComponentWithSlot
中,一切都很好,Target
现在可以正确地$validator
从Parent
.