使用Vue Router应对参数更改的最佳实践

当将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也可能很有趣。

西里A2020/03/16 15:27:15

由于GitHub问题,我刚刚找到了一个可能的答案

可以使用也用于让Vue跟踪视图中的更改key属性v-for为此,您必须将属性添加到router-view元素:

<router-view :key="$route.fullPath"></router-view>

将其添加到视图后,您无需再观看$route了。相反,Vue.js将创建该组件的全新实例,并调用created回调。

但是,这是一个全有或全无的解决方案。在我当前正在开发的小型应用程序上,它似乎运行良好。但这可能会影响其他应用程序的性能。如果您确实只想仅对某些路由禁用视图的重用,则可以查看根据route设置key的值但是我真的不喜欢这种方法。