使用Vue路由器对Params更改做出反应的最佳实践

时间:2016-11-03 14:58:27

标签: vue.js vuejs2 vue-router

将Vue路由器与#include <stdio.h> int main(void) { char array[256]; scanf("%s", array); printf("%s", array); return 0; } 等路由一起使用时,您必须将观察者添加到react for parameter changes。这导致在URL中具有参数的所有视图中有些烦人的重复代码。

这可能类似于以下示例:

/foo/:val

还有其他方法可以克服这个问题吗? export default { // [...] created() { doSomething.call(this); }, watch: { '$route' () { doSomething.call(this); } }, } function doSomething() { // e.g. request API, assign view properties, ... } created更改的处理程序是否可以合并?是否可以禁用组件的重用,以便根本不需要观察者?我正在使用Vue 2,但这对Vue 1来说也许很有趣。

1 个答案:

答案 0 :(得分:23)

由于GitHub issue而我刚刚找到的一个可能的答案如下:

可以使用也用于$( window ).on( 'resize', function( event ) { var windowSize = $( window ).width(); if ( windowSize < 1000 ) { if ( $( '.site-header .search-form' ).hasClass( 'search-form--active' ) ) { $( '.site-header .search-form' ).removeClass( 'search-form--active' ); } else if ( $( '.site-header .search-trigger' ).hasClass( 'search-form--active' ) ) { $( '.site-header .search-trigger' ).removeClass( 'search-form--active' ); } $( '.search-trigger' ).click( function() { $( '.search-trigger' ).toggleClass( 'search-overlay.show' ); } ); } } ); 的{​​{3}}让Vue跟踪视图中的更改。为此,您必须将属性添加到v-for元素:

router-view

将其添加到视图后,您无需再观看<router-view :key="$route.fullPath"></router-view> 。相反,Vue.js将创建一个全新的组件实例,并调用$route回调。

然而,这是一个全有或全无的解决方案。它似乎在我正在开发的小应用程序上运行良好。但它可能会影响另一个应用程序的性能。如果您确实只想禁用某些路线的视图重用,可以查看设置created的值key attribute。但我真的不喜欢这种方法。