Vuejs从父提供者组件

时间:2018-06-04 21:15:06

标签: javascript vue.js inject

我试图从父“ThemeProvider”组件注入vue中的功能组件,但功能组件没有获得提供的主题对象。

仅当提供程序位于View.vue文件中时才有效...有没有办法做“父提供”> “孩子注射”或是“祖先提供”> “孩子注射”唯一的方法?

ThemeProvider.vue

export default {
  name: 'ThemeProvider',

  provide: {
    theme: {
      dark: '#222'
    }
  },

  render (h) {
    return h('div', this.$slots.default)
  }
}

FunctionComponent.vue

 export default {
    functional: true,

    inject: {
      theme: {
        default: () => ({})
      }
    },

    render: (h, { injections, children }) => {
      console.log(injections.theme.dark) // dont exist
      return h('div', children)
    }
  }

View.vue

<template>
 <ThemeProvider>
  <FunctionalComponent />
 </ThemeProvider>
</template>

0 个答案:

没有答案