[Vuejs]-How to define new router?

0👍

Looking at the source here for getDefaultRoute(),

function getDefaultRoute (menu = []) {
  let defaultRoute

  menu.forEach((item) => {
    if (item.meta.default) {
      defaultRoute = item
    } else if (item.children) {
      let defaultChild = item.children.find((i) => i.meta.default)
      defaultRoute = defaultChild || defaultRoute
    }
  })

  return defaultRoute
}

I would say that you don’t need the line

{path: '*', redirect: { name: getDefaultRoute(menuModule.state.pages).name }}

since for contact you have set default: false and there are no children, which means the function returns null (hence the error message you received).

The framework seems to assume a single list of menu items and one of them to be set as default. But I think your approach should work.

The only potential problem is that it looks like you are changing framework code, which means a bit more work when upgrading to next version of the framework.


A note about upgrading

I just ran the basic install, and looking at the project I have to revise my remark about a potential upgrade problem.

Essentially, this is a template not a framework. The difference is that the installer creates starter code in your project’s src folder, which you can freely modify and save to a github repository.

There is no package under node_modules that would overwrite your router changes when you run npm install on your project at a future date.

If epicmaxco create a new version of the template that you wish to use, you would simply create a new project and copy the changes you previously made within src to the new project (perhaps run a diff of the old and new src folders).

Leave a comment