Vue.js 使用Vue路由器响应参数更改的最佳实践
当将Vue路由器与Vue.js 使用Vue路由器响应参数更改的最佳实践,vue.js,vuejs2,vue-router,Vue.js,Vuejs2,Vue Router,当将Vue路由器与/foo/:val等路由一起使用时,您必须向其添加观察者。这会导致在URL中包含参数的所有视图中出现令人讨厌的重复代码 这可能类似于以下示例: export default { // [...] created() { doSomething.call(this); }, watch: { '$route' () { doSomething.call(this); }
/foo/:val
等路由一起使用时,您必须向其添加观察者。这会导致在URL中包含参数的所有视图中出现令人讨厌的重复代码
这可能类似于以下示例:
export default {
// [...]
created() {
doSomething.call(this);
},
watch: {
'$route' () {
doSomething.call(this);
}
},
}
function doSomething() {
// e.g. request API, assign view properties, ...
}
有没有其他办法克服这个问题?创建的
和$route
更改的处理程序是否可以合并?是否可以禁用组件的重用,以便根本不需要观察者?我正在使用Vue 2,但这对Vue 1来说可能也很有趣。我刚刚发现的一个可能的答案是,感谢a
可以使用也用于v-for
的来让Vue跟踪视图中的更改。为此,必须将该属性添加到路由器视图
元素:
<router-view :key="$route.fullPath"></router-view>
将其添加到视图后,您不再需要查看$route
。相反,Vue.js将创建组件的全新实例,并调用created
回调
然而,这是一个全有或全无的解决方案。它似乎在我目前正在开发的小型应用程序上运行良好。但它可能会影响其他应用程序的性能。如果确实希望仅对某些管线禁用视图的重用,可以查看设置键的值。但是我真的不喜欢这种方法。Hmm.v1路由器有一个可重用性,但我在v2中没有看到。有趣。@ceejayoz你说得对,它就在那里,但是。好吧,谢谢你,不过我在这些路由组件中有子组件,它们不会被保留。每次我在两个单独安装且仅安装一次的路由组件之间切换时,我看到它们都会发出已安装事件。有没有办法让它们的子组件也保持活动状态?将所有子项折叠到一个上,即使我使用了一个键。谢谢,它在Vue3中仍然可以完美工作