vue项目路由跳转和防止动态路由组件复用

标签实现新窗口打开

官方文档中说 v-link 指令被 组件指令替代,且 不支持 target=“_blank” 属性,如果需要打开一个新窗口必须要用标签,但事实上vue2版本的 是支持 target=“_blank” 属性的(tag=“a”),如下:

// An highlighted block
<router-link target="_blank" :to="{path:'/home',query:{id:'1'}}">新页面打开home页</router-link>

编程式导航

有些时候需要在单击事件或者在函数中实现页面跳转,那么可以借助router的示例方法,通过编写代码实现。我们常用的是 $router.push 和 r o u t e r . g o 但是 v u e 2.0 以后,这种方式就不支持新窗口打开的属性了,这个时候就需要使用 t h i s . router.go 但是vue2.0以后,这种方式就不支持新窗口打开的属性了,这个时候就需要使用this. router.go但是vue2.0以后,这种方式就不支持新窗口打开的属性了,这个时候就需要使用this.router.resolve,如下:

// An highlighted block
seeShare(){
   let routeUrl = this.$router.resolve({
     path: "/share",
     query: {id:96}
   });
     //let routeUrl = this.$router.resolve(`/share/${96}`)
   window.open(routeUrl.href, '_blank');
}

完整代码

有些时候需要在单击事件或者在函数中实现页面跳转,那么可以借助router的示例方法,通过编写代码实现。我们常用的是 $router.push 和 r o u t e r . g o 但是 v u e 2.0 以后,这种方式就不支持新窗口打开的属性了,这个时候就需要使用 t h i s . router.go 但是vue2.0以后,这种方式就不支持新窗口打开的属性了,这个时候就需要使用this. router.go但是vue2.0以后,这种方式就不支持新窗口打开的属性了,这个时候就需要使用this.router.resolve,如下:

    <div class="c-p" @click="openWin('companiesNumber')">
	    <span>更多</span>
	</div>
}
	openWin(name) {
			let routeData = this.$router.resolve({
				name,
				query: {
					industryChainId: this.searchData.industryChainId
				}
			});
			window.open(routeData.href, "_blank");
		},

this.$router.push({name: ‘abc’})

防止动态路由组件复用

从detail/1导航到detail/2,原来的组件实例会被复用。因为两个路由都渲染同一组件,比起销毁再创建,复用则显得更加高效。不过,这也意味着组件的生命周期钩子不会再被调用,即页面第二次加载时钩子函数将失效。那么,当复用组件时,想对路由参数做出响应的话,需要在watch对象内添加对$route对象变化的跟踪函数:

即from detail/1 to detail/2
同时vue-router使用path to regexp作为路由路径引擎,给参数添加匹配模式。
下面是一个只传递数字的正则,正则需要放在括号中

{
    path: '/detail/:id(\\d+)',
    name: 'Detail',
    component: Detail
}

链接: https://www.cnblogs.com/yjiangling/p/13640043.html.
链接: https://www.jb51.net/article/147801.htm.
链接: https://www.freesion.com/article/7160800696/.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值