有条件地将组件导入Vue Router

djcaesar9114

我想有条件地将组件导入vue路由器。这是我目前所拥有的:

children: [
  {
    path: ':option',
    component: () => import('../components/Option1.vue'),
  },
],

根据什么:option是我想要导入一个不同的组件(Option1.vueOption2.vue,等)。我知道我可以放几个,children但实际上我需要option在父组件中使用变量(如果路由有选项,我会进行测试)。

怎么可能呢?提前致谢 :)

您可以创建包含动态组件的加载程序组件,而不必执行条件路由。在加载程序中,您将根据路由参数有条件地延迟加载选项组件。这样不仅在路由时更容易,而且您也不必手动导入任何内容,并且仅会导入使用的选项。

步骤1.路由到选项加载器组件

路由器

{
  path: ':option',
  component: () => import('../components/OptionLoader.vue'),
}

第2步。在该选项加载器模板中,使用一个动态组件,该组件将由计算得出的称为optionComponent

OptionLoader.vue

<template>
  <component :is="optionComponent" />
</template>

步骤3.创建一个可以延迟加载当前选项的计算式

OptionLoader.vue

export default {
  computed: {
    optionComponent() {
      return () => import(`@/components/Option${this.$route.params.option}.vue`);
    }
  }
}

例如,当option路线参数为时,这将加载名为“ Option5.vue”的组件5现在,您有一个延迟加载的选项加载器,而不必手动导入每个选项。


编辑: OP现在指示他正在使用Vue 3。

享有风景3

对于Vue 3,将计算值更改为使用defineAsyncComponent

OptionsLoader.vue

import { defineAsyncComponent } from "vue";
computed: {
  optionComponent() {
    return defineAsyncComponent(() =>
      import(`@/components/Option${this.$route.params.option}.vue`)
    );
  }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在 Vue Router 上有条件地映射路由组件

有条件地加载vue-router

使用 React Router 有条件地重定向

react-router-dom 有条件地构建路由并将参数传递给基于类的组件

React-Router:如何有条件地将路由重定向到另一个 url?

有没有一种干净的方法可以有条件地为同一React Router路由加载和渲染不同的组件?

使用React Router当前路由在菜单上有条件地设置活动类

Angular2 Router-有条件地隐藏链接

有条件地禁用滚动到顶部的dom change react router

有条件地导入模块

有条件地渲染组件

有条件地渲染组件

Sapper / Svelte可以有条件地导入组件吗?

如何在反应路由器中有条件地导入组件

如果有条件使用React Router V4更改路线

根据组件的使用位置,有条件地将className应用于react组件

是否可以在Vue.js中有条件地导入CSS文件?

如何有条件地追加在作用域Vue公司组件的元素?

Vue:根据URL有条件地隐藏视图组件

有条件地渲染 Vue 元素还是高阶组件?

如何在有条件的组件上有条件地添加道具?

有条件地将电子导入本机Web应用程序

有条件地导入 npm 模块?

如果源可用,SSIS 有条件地导入

有条件地导入python类的片段

有条件地从另一个组件导入一个组件的最佳方法是什么?

如何有条件地将“按钮”添加到“工具栏”“表单”“组件”?

有条件地将覆盖的 SCSS 应用到 Angular 组件

反应:内联有条件地将prop传递给组件