Vue.js:以编程方式实例化功能组件

时间:2018-12-20 12:21:00

标签: vue.js vuejs2 vue-component

当我使用此代码实例化功能组件时

const Component_Constructor = Vue.extend(Component);
let component_instance = new Component_Constructor();
component_instance.$mount();

该组件在context函数上获得未定义的render 自变量

如何将参数(道具,插槽,子代...)传递给组件?

2 个答案:

答案 0 :(得分:1)

到目前为止,我发现的唯一解决方法是将functional组件包装到另一个常规组件中,如下所示:

let AComponent = {
    functional: true,
    name: 'a-component',
    render(h, context) {
        return h('div', context.children[0].text);
    }
};
let template = `<a-component>test content</a-component>`;
let WrapperComponent = Vue.extend({
    components: {AComponent},
    template,
});
let componentInstance = new WrapperComponent().$mount();
let content = componentInstance.$el;

答案 1 :(得分:0)

正如 vuejs 核心团队之一所说的https://forum.vuejs.org/t/functional-component-with-vue-extend/40752,您不能手动挂载功能组件。

$mount() 需要一个 vue 实例,而功能组件没有。