Vue:参数值不会在创建的方法中改变

Vue : params value don't change in created method

我把这个 link 传给另一个带有参数的组件 :

<div class="dropdown-menu bg-light" aria-labelledby="navbarDropdown">
      <div v-for="category in categories" :key="category.id">
         <div v-if="lang=='ku'"><li><a class="dropdown-item font-weight-bold py-2" href="#" ><router-link :to="{name:'category',params:{id:category.id}}">{{category.catagory_ku}}</router-link></a></li></div>

          <div v-else><li><a class="dropdown-item font-weight-bold py-2" href="#" ><router-link :to="{name:'category',params:{id:category.id}}">{{category.catagory_ar}}</router-link></a></li></div> 
          </div>
     </div>

这样的类别组件:

<template>
    <div style="margin-top:132px">
        Categories {{id}}
    </div>
</template>
<script>
export default {
data(){
    return {
        id :''
    }
},
created(){
    this.id=this.$route.params.id
}
}
</script>

当我按下路由 link 时,id 值在 url 中发生了变化,但在页面视图中,它只采用我单击的第一个 id 值,并且在我单击另一个相同的 [=18] 后不会更改=] 通过不同的 id 值

尝试将 id 定义为计算 属性 :

<template>
    <div style="margin-top:132px">
        Categories {{id}}
    </div>
</template>
<script>
export default {
   computed:{
      id(){
        return this.$route.params.id
      }
 }
}
</script>

这应该在挂载的钩子里

created(){
    this.id=this.$route.params.id
}
// replace with
mounted(){
    this.id = this.$route.params.id
}

此外,如果您想执行一些与 ID 更改相关的额外操作,您可以 watch 路由

<template>
    <div style="margin-top:132px">
        Categories {{ id }}
    </div>
</template>
<script>
export default {
data() {
    return {
        id: ''
    }
},
mounted() {
    this.id = this.$route.params.id
},
watch: {
    $route(to) {
      this.id = to.params.id
      // do other logics here
    }
}
</script>