如何在不同的路由中重新初始化相同的组件

How can I re initialize same components in different routes

场景:

我有一个多步骤表单,如果用户点击下一步按钮,路由中唯一改变的是 ID,例如形式 /step/:id,但每当我有 steps/routes 包含与前一个相同的组件时,它只调用第一个组件的 'created' 方法,它不会调用下一个。

有没有办法在我每次更改路线时 re-create/initialise 组件?

您可以查看 docs

中的 "Reacting to Params Changes" 部分

One thing to note when using routes with params is that when the user navigates from /user/foo to /user/bar, the same component instance will be reused. Since both routes render the same component, this is more efficient than destroying the old instance and then creating a new one. However, this also means that the lifecycle hooks of the component will not be called.

要对同一组件中的参数变化作出反应,您可以简单地观察 $route 对象:

  watch: {
    '$route' (to, from) {
      //update the variables with new route params
    }
  },

你也可以看看我类似的回答

我又遇到了一个问题。每当我的路由参数发生变化时,我传递给该组件的道具都不会更新。

在第一次加载时,prop 值得到更新,但是当我转到下一个 step/route 时,$route 得到更新并且 watch 内的方法也被执行,但是值传递的 prop 的值与第一个 step/route 的值相同。然后,当我再次转到下一个 step/route 时,第三个 step/route 的组件的值应该是第二个 step/route 的组件的值。道具的价值似乎比实际路线落后1步。

这是我通过道具的方式:

<el-repeater :element.sync="element"></el-repeater>

编辑: 但是在UI中可以看到的所有数据都是更新和正确的,那些数据是基于已经通过的prop .