[Vuejs]-Vue router not navigating

7👍

The Component in this case is the same, so vue will reuse the instance.
The this.$route in the component will change but created(), beforeMounted() and mounted() hooks won’t be callled.
Which is probably where you use the this.$route.params.cname

To force vue to create a new component instance you can set a unique key on the like <router-view :key="$route.fullPath">

Another options is to react to changes in the $route with a watcher:

watch: {
  "$route.params.cname": {
    handler(cname) {
      // do stuff
    },
    immediate: true
  }
}

0👍

Router can be called within a component just fine. In fact, you usually call router from the component.

From the code snippets provided, at one point in the code you use cn, then at other point you use cname. That might be the problem why it never quite work for you.

I create a codesandbox to recreate your scenario, and besides that minor naming mentioned above, things seem to work just fine.

Leave a comment