vue2 单页面内如何动态引入组件 兼容webpack版本低的情况

在开发大型项目中如果一个页面引入多个组件代码会非常臃肿,会让我们用许多v-if ref来控制页面显示比如下面这种情况,后期维护会很麻烦

这个时候就需要使用动态异步引入组件的方式

因为我的webpack版本较低所以采用require方式 而非import ,不然的话会报错

computed: {
      loader() {
         // this.recordType 是文件名
         return  () =>  resolve =>                  
         require([`@/views/myApproval/components/${this.recordType}`],resolve)
      },
    },

 在vue的计算属性中加入上方代码,每次触发该方法时引入的路径都会根据 this.recordType而改变

引入的文件名需要与 this.recordType 一致

// 在要执行的方法内加入该代码
// 将要引入的路径赋给 component 然后进行绑定
 this.component = this.loader()

最后使用component 组件  :is中的component 就是引入的路径,一个ref就可以调用组件内的方法

上面那些 代码都可以删掉了不需要用多个 v-if来控制

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Vue2中,可以通过异步组件和`import()`函数来实现动态引入组件。具体步骤如下: 1. 在Vue组件中,使用`Vue.component()`方法或`components`对象定义组件。 2. 在需要动态引入组件的地方,使用`import()`函数异步加载组件。 3. 在异步加载组件的回调函数中,使用`Vue.component()`方法或`components`对象注册组件。 4. 在Vue实例中,通过修改变量的值来触发异步加载组件。 示例代码如下: ```javascript // 在 Vue 组件中定义组件 const ComponentA = { template: '<div>Component A</div>', }; Vue.component('ComponentA', ComponentA); // 在需要动态引入组件的地方,使用 import() 函数异步加载组件 function loadComponentB(callback) { import('./ComponentB.vue') .then((module) => { // 在异步加载组件的回调函数中注册组件 Vue.component('ComponentB', module.default); callback(); }) .catch((error) => { console.error(error); }); } // 在 Vue 实例中,通过修改变量的值来触发异步加载组件 new Vue({ el: '#app', data() { return { currentComponent: 'ComponentA', }; }, methods: { toggleComponent() { if (this.currentComponent === 'ComponentA') { loadComponentB(() => { this.currentComponent = 'ComponentB'; }); } else { this.currentComponent = 'ComponentA'; } }, }, }); ``` 在上述示例中,当点击某个按钮时,会触发`toggleComponent`方法,从而触发异步加载组件。在异步加载组件的回调函数中,注册组件并修改`currentComponent`的值,从而动态改变引入组件

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值