vue router.push同一页面不刷新问题

本文讲述了如何在Vue应用中,通过监听路由参数变化,实现在搜索框输入更新时,避免页面刷新但仍显示最新搜索结果。关键在于使用watch和$router.push配合,确保搜索内容的动态加载。

vue router.push同一页面不刷新问题

问题描述
在做搜索框时,每次根据搜索结果展示搜索内容,但是每次router都是一样的,只是参数不一样,直接使用router.push,第二次搜索后页面就不会响应搜索内容。

解决方法:
在搜索页面设置watch监听搜索的参数变化。

搜索框代码

method:{
	async handleSearch(){
		searchTool(param).then(res=>{
			this.$router.push({name:'all',query:{keyword:this.search}})
			this.search=''
		})
	}
}

keyword是向搜索页面传的参数,search是搜索的内容,name对应跳转页面的name,searchTool和param是自己封装的接口和参数。
然后再搜索界面通过this.$route.query.keyword接收这个参数,查询内容。

查询页面代码

watch:{
	//监听route
	$route:{
		handler(){
			//接收搜索框传的值
			this.keyword=this.$route.query.keyword
			if(this.keyword)
			{
				//不为空按照搜索条件查询
				this.getSearchList()
			}
			else
			{
				//空值查询全部
				this.getAllList()
			}
		},
		immediate:true
	}
}

getSearchList和getAllList是自己封装的函数,根据自己内容进行调整。
immediate
当父组件向子组件动态传值时,子组件首次获取到父组件传来的默认值时,也需要执行函数,就要将immediate设置为true

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值