为什么vue路由点击列表页进对应的详情页,打开页面需刷新才是当前的页面?
类似这种新闻列表,在当前页面如果直接写¥route.params.id可以获取到点击的时候传过来的参数,把参数赋给axios的url,进行接口调用,显示页面,但是当点击一次之后,返回列表继续点击,进入的详情页面依然是上一个 详情页,只有刷新一下才会成为当前的详情页?
我是刚刚接触vue的小白,想问一下各路大神们这时什么原因呢?如何解决?
import {mapActions, mapState, mapGetters} from 'vuex'
import axios from 'axios'
axios.defaults.baseURL = 'http://120.77.215.34:9001';
export default{
data(){
return {
detail:{},
title:"",
createAt:"",
content:"",
id:this.$route.params.id
}
},
created(){
axios.get("/news/detail",{
params:{
id:this.id
}
}).then(res=> {
this.title = res.data.news.title;
this.createAt = res.data.news.createAt;
this.content = res.data.news.content;
})
watch: {
'$route' (to, from) {
// 获取最新的id 调用获取数据方法
this.getData(this.id)
}
}
}
这时我写的代码,望高人指导~~
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
经过多方摸索,问题已解决,感谢楼上给位提供给的思路!
解决方法:watch的route监听的时候不仅要监听method这个方法,并且要单独监听当前的参数,就ok!
//mode: 'history'
去掉就行了
或者 手动
router.refresh() 刷新操作
监控一下路由变化,重新执行一下你的创建方法。
created>mounted(如果是keep-alive使用actived)这样不行吗?