当将Vue Router与类似的路由一起使用时,/foo/:val
您必须添加观察者以对参数更改做出反应。这会导致在URL中具有参数的所有视图中出现令人讨厌的重复代码。
这可能类似于以下示例:
export default {
// [...]
created() {
doSomething.call(this);
},
watch: {
'$route' () {
doSomething.call(this);
}
},
}
function doSomething() {
// e.g. request API, assign view properties, ...
}
还有其他方法可以克服吗?处理程序created
和$route
更改的处理程序可以合并吗?是否可以禁用组件的重用,以便根本不需要观察者?我正在使用Vue 2,但这对于Vue 1也可能很有趣。
由于GitHub问题,我刚刚找到了一个可能的答案。
可以使用也用于让Vue跟踪视图中的更改的
key
属性v-for
。为此,您必须将属性添加到router-view
元素:将其添加到视图后,您无需再观看
$route
了。相反,Vue.js将创建该组件的全新实例,并调用created
回调。但是,这是一个全有或全无的解决方案。在我当前正在开发的小型应用程序上,它似乎运行良好。但这可能会影响其他应用程序的性能。如果您确实只想仅对某些路由禁用视图的重用,则可以查看根据route设置
key
的值。但是我真的不喜欢这种方法。