vue $mount 挂载异步组件,没有正确渲染是怎么回事?

发布于 2022-09-11 18:50:33 字数 917 浏览 17 评论 0

js 代码:

// 将异步组件改成是 import test from 'test.vue' 
// 也就是普通组件,结果正常!
// 求教
const test = () => import('test.vue');

export default {
    data () {
        dom: {} ,
    } , 
    mounted () {
        this.dom.container = this.$refs.container;
        
        this.mount();
    } , 
    methods: {
        mount () {
            let childVue = Vue.extend(test);
            new childVue().$mount(this.dom.container);
        } , 
    } , 
};

test.vue

<template>
    <div>hello world!</div>
</template>
<script><>
export default {
    name: 'v-test' , 
    
};
</script>
<style scoped></style>

然而,页面上却没有渲染出 hello world!,没报错,也啥都没渲染出来!这是怎么回事?

难道异步组件一定要配合 vue-router<component :is='c'></component> 才能够正常使用吗?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

謸气贵蔟 2022-09-18 18:50:33

js中的第一句const test = () => import('test.vue');换成import test from './test.vue'试试?


我理解的import函数返回的是一个promise。所以这里你定义的test执行后返回的应该是一个promise。那应该就可以按Promise的写法去写后面的代码:

test().then((comp) => {
    let childVue = Vue.extend(comp);
    new childVue().$mount(this.dom.container);
})

亲自试了一下。需要这样写。

test().then((compModule) => {
    console.log(compModule)
    let childVue = Vue.extend(compModule.default);
    new childVue().$mount(this.dom.container);
})

打印出来了compModule。如下:

clipboard.png

实际上我们需要的是它的default。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文