在Nuxt Router中动态选择组件

时间:2019-12-18 13:08:55

标签: vue.js vue-router nuxt.js

我想为所有语言呈现相同的组件。翻译将在组件内部完成。 url和组件的关系应如下所示:

pseudocode:
browserurl: "/blogpost_1"
nuxtcomponent: "blogpost_1"

browserurl: "/en/blogpost_1"
nuxtcomponent: "blogpost_1"

browserurl: "/randompage"
nuxtcomponent: "randompage"

browserurl: "/en/randompage"
nuxtcomponent: "randompage"

我的方法是执行以下操作,很遗憾,我找不到访问pathMatch的方法。

router: {
   extendRoutes(routes, resolve){
   routes.push({
     path: 'en/*',
     component: resolve(__dirname, '/' + somehow.access.pathMatch )
})
}

}

1 个答案:

答案 0 :(得分:1)

我认为您无法动态解析组件。 component:需要组件实例或Promise。承诺解决后,结果将被缓存。我可以想象使用导航卫士并“手动”切换组件的解决方案,但这将需要手动导入视图等。

因此,最好的办法是重写nuxt生成的路径,以包括可选的路径段(从/about/:lang(en|jp)?/about,以便它接受/en/about之类的路径),然后您的组件会收到{{ 1}}参数,其中lang为空,否则将包含语言。...

  1. meta中定义可用的翻译
  2. 用翻译重写页面路径

在您的页面中:

/about

在Nuxt配置中(伪-未测试)

<script>
export default {
  meta: {
    translations: ['en', 'jp']
  }
}
</script>