str*_*str 15 vue.js vue-router vuejs2
使用Vue路由器时,/foo/:val
您需要添加一个观察器以响应参数更改.这导致在URL中具有参数的所有视图中有些恼人的重复代码.
这可能类似于以下示例:
export default {
// [...]
created() {
doSomething.call(this);
},
watch: {
'$route' () {
doSomething.call(this);
}
},
}
function doSomething() {
// e.g. request API, assign view properties, ...
}
Run Code Online (Sandbox Code Playgroud)
有没有其他方法可以克服这个问题?可以将处理程序created
和$route
更改结合起来吗?是否可以禁用组件的重用,以便根本不需要观察者?我正在使用Vue 2,但这对Vue 1来说也许很有趣.
str*_*str 27
由于GitHub问题我刚刚找到的一个可能答案如下.
可以使用也用于让Vue跟踪视图中的更改的key
属性v-for
.为此,您必须将该属性添加到router-view
元素:
<router-view :key="$route.fullPath"></router-view>
Run Code Online (Sandbox Code Playgroud)
将其添加到视图后,您无需再观看$route
.相反,Vue.js将创建一个全新的组件实例,并调用created
回调.
但是,这是一个全有或全无的解决方案.它似乎在我正在开发的小应用程序上运行良好.但它可能会影响另一个应用程序的性能.如果你真的想禁用仅部分航线视图的重用,你可以看看设置key
的值根据路线上.但我真的不喜欢这种方法.
归档时间: |
|
查看次数: |
6108 次 |
最近记录: |