Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vue.js/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vue.js 如何从vue功能组件提供已通过的注入_Vue.js_Vuejs2_Vue Component_Vue Render Function - Fatal编程技术网

Vue.js 如何从vue功能组件提供已通过的注入

Vue.js 如何从vue功能组件提供已通过的注入,vue.js,vuejs2,vue-component,vue-render-function,Vue.js,Vuejs2,Vue Component,Vue Render Function,树: 我有父母提供的$validator。 在FnChild内部,我将render函数与其他异步组件(Target)一起使用 inject:['$validator'], 渲染:(h,上下文)=>{ 返回h(目标、context.data、context.children) } 注入存在于上下文中。注入,但是如何使用功能组件将其传递给目标 我可以想象,只有将FnChild重写为非功能组件,并在FnChild中使用provide:['$validator'] UPD:正如答案中所指出的,您不

树:


我有父母提供的$validator。 在
FnChild
内部,我将render函数与其他异步组件(
Target
)一起使用

inject:['$validator'],
渲染:(h,上下文)=>{
返回h(目标、context.data、context.children)
}
注入存在于
上下文中。注入
,但是如何使用功能组件将其传递给
目标

我可以想象,只有将FnChild重写为非功能组件,并在
FnChild
中使用
provide:['$validator']

UPD:正如答案中所指出的,您不需要在功能组件内部进行任何注入/提供,它只起作用

我的具体案例与v-validate和在每个组件中自动注入新的
$validator
有关。在我的具体案例中,它是一个带有插槽的组件,它覆盖了
$validator
,因为它里面没有
注入:['$validator']
。结构很简单,如下所示:

母公司

<ComponentWithSlot>
  <FnChild slot='my-slot' />
</ComponentWithSlot>

父级注入了验证器,但ComponentWithSlot没有,因此v-validate为ComponentWithSlot重新创建了新实例,并将其向下提供给FnChild,而不是来自
父级
组件的
$validator

因此,一旦我在
组件中添加了
注入:['$validator']
,一切都很好,
Target
现在正确地从
父级
接收
$validator
,是专门设计用于:

允许祖先组件作为其所有子代的依赖项注入程序,而不管组件层次结构有多深,只要它们位于同一父链中

  • FnChild
    根本不需要使用
    inject:['$validator']
  • 无需在
    FnChild
    render函数中传递与注入相关的任何内容
  • 只需在
    Target
    异步组件中使用
    inject:['$validator']
  • 检查这个

    提供和注入主要用于高级插件/组件库用例不建议在通用应用程序代码中使用它们。


    在这种情况下,为什么需要使用渲染函数?除非绝对必要,否则我通常避免使用它们。@MJ_Wales我认为当您不真正需要实例或它是一个没有任何逻辑的组件(在我的情况下,它只是另一个异步组件的解析器)时,使用功能组件是一个好主意。那么为什么不做得更轻呢?但在vue中,使用功能组件通常是痛苦的。。。因为奇怪的工作方式,bug或者奇怪的api。这很公平。我认为这是一个范围问题。我会发布我的想法我不确定抱歉,删除了我不正确的答案。嗯,这很奇怪,可能是我在其他地方做错了什么。因为你的例子看起来很正确,谢谢。