routes - vue.js 上的动态路由器链接不起作用

标签 routes vue.js

我正在拉我的最后一缕头发。请问我错过了什么?

单击时每个链接都正确显示在地址栏上,但页面未加载或路由。之后刷新显示正确的页面。

[路线] `

import eachPost from './components/eachPost.vue';
{ path: '/eachPost/:id', component: eachPost }

[组件]

<router-link :to="'/eachPost/' + post.p_id" v-for="(post,i) in posts" 
:key="i" exact>{{ post.header }}</router-link>

`

路由器链接列表显示在每个组件上,包括 eachPost.vue 本身。只有当从其他组件而不是从 eachPost.vue 组件单击时,页面才会被路由。

最佳答案

好的,我想我明白你的问题了。您需要观察参数更改的路径(我知道,这不是 Vue 最直观的功能之一!)。因此,在您的基础组件中,您需要执行以下操作:

watch: {
  '$route' (to, from) {
    // Whatever you need to change route
  } 
}

这里的问题是组件不会被重新渲染,所以如果你在创建元素时获取数据,那么当路由改变时需要调用相同的方法。这是一个基本示例:

{
  template: '<div>{{message}}</div>',
  created() {
    this.setMessage();
  },
  methods:{
    setMessage(){
      this.message = 'Bar ' + this.$route.params.id;
    }
  },
  watch: {
    '$route' (to, from) {
      this.setMessage();
    }
  },
  data() {
    return {
      message: ''
    }
  }
}

我在这里所做的只是在路由更改时更改消息,您可以在这个 JSFiddle 上看到它的实际操作:https://jsfiddle.net/unrm8tcL/

关于routes - vue.js 上的动态路由器链接不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46327282/

相关文章:

javascript - Vuex 中状态发生变化时如何调度操作?

javascript - 如何将字符串中的 <br> 解析为 VUE.js 中的 html 标记

java - 我如何计算字节数组的 1 字节校验和

ruby-on-rails - Rails 路由约束不起作用

javascript - 使用类的 Vue 实例

python - 我可以停止在 Django 中渲染变量吗?

javascript - Vue 组件渲染期间多次调用的函数

node.js - 获取 http ://localhost:4000/rugs 500 (Internal Server Error)

Symfony 4 - Webpack-encore 使用 FosJsRouting : Routing is not defined

node.js - 如何使用express-async-handler