Vue重新渲染一个组件

我有一个sidebar:

Home User List

现在我点击List,然后router是这样工作的:

this.$router.push('/index/list')

这样的话List组件就会被渲染进 <router-view> ,我现在处于List页面,我想再点击一次菜单中的 List tab,然后刷新List页面的数据,但是因为我当前已经处于List组件了,好像不会重新渲染页面,有没有什么好办法实现?
PS:我是在created()中获取数据的。
PPS:想到一个办法就是监听当前路由,如果路由没有变化就刷新页面,但是这样相当于按F5,刷新整个页面,太丑了。我只想重新渲染组件的数据。

阅读 23.7k
4 个回答

你都提到了“数据”,那答案就出来了。想重新渲染,改变数据就行了。

你每次点击list的时候触发获取数据重新不就行了,spa里刷新页面是很愚蠢的做法,因为spa的优势就是不用刷新嘛

如果数据没有变化,为什么要刷新呢

如果是要重新请求数据,为何不将created进行的操作提成方法放在methods,在tab的点击事件中再调用呢
如果是要在相同路由下进行刷新,可以尝试

router.go({
  path: '/List',
  force: true
})

给list组件动态绑定一个属性,每次点击list的时候改变下,在list组件里watch这个属性去调用获取函数的方法,应该可以吧。。。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题