我在Vue3
中创建了一个dynamic component
。我使用v-bind
提供了props
。
<component :is='MyComponent' v-bind='myProps' />
我想使用provide/inject
特性。如何将提供的属性导入动态组件?我的动态组件在setup
函数中调用inject
,并期望其子组件的值为provided
。
虽然这没有记录在Vue上,但我尝试了以下方法,但没有成功:
<component :is='MyComponent' v-bind='myProps' :provide='myProvidedProps'/>
甚至尝试将provide
对象放入props
对象中。
2条答案
按热度按时间fiei3ece1#
也许你只需要把provided属性注入到需要它的组件中:
jc3wubiy2#
浏览完Vue3源代码后,无法直接在模板中将
provide
规范指示给dynamic component
,必须在动态组件的父组件的设置函数或选项中调用,或者在动态组件的设置或选项中调用。这两个选项是:
1.在承载动态组件的组件上调用
provide
。这对我不起作用,因为我的设置函数在我的动态组件被激活之前就已经被调用了;我还需要同时设置组件类型和提供的值。
1.将要提供的项作为 prop 发送到组件中,并让动态组件对它们调用provide。
一个二个一个一个
我的组件
现在,这也有它的问题,因为每个动态组件现在都需要负责知道并调用传入的provide项。
溶液
每个组件都需要知道所提供的值,一种绕过这种情况的方法是创建一个提供这些值的中间组件。
可提供(中间组件)
像这样使用它: