关于vue $route 和 bus的疑问。

我目前遇到的问题:

问题一
以前我A跳转到B通过页面传参的形式:domain?params=1 现在用了vue发现可以用router页面间传参:
A页面通过this.$router.push({name: 'orderPay', params: {id}})跳转到B页面
B页面通过let orderId = this.$route.params.id获取到id向后台发起请求。跳转OK。
但是在B页面原地刷新后,id肯定获取不到。vuex暂时还没看太多,项目小也不打算用。了解了下vue bus 所以有了另一个问题:

问题二
接着上面的流程,我现在有一个bus.js,里面有个vue实例:

export default new Vue({
  name: 'bus',
  data () {
    return {
      addr: {
        name: '',
        phone: '',
        area: '',
        address: ''
      }
    }
  },
  beforeCreate () {
  },
  created () {
    this.$on('getAddr', () => {
      console.log('%c bus获取地址成功', 'color:green')
    })

    this.$on('updateAddr', (obj) => {
      this.addr = obj
      console.log('%c bus地址更新成功', 'color:green')
    })
  }
})

B获取到后台数据后,bus.$emit('updateAddr', that.addr)传入数据到bus
此时B再跳转到CC通过this.addr = bus.$emit('getAddr').addr也能够获取到数据,但是原地刷新后也没有了。。

目前我的思路是
问题一:B页面获取到id马上存sessionStorage 或者 还是只有通过url传参
问题二:bus只要有数据跟新,马上存本地存储

请问各位有没有更多更好的的解决方案或者思路。这个项目其实就是走一个购买流程比较简单,A购买页,B下单页带地址信息,C页面是B跳转过来修改地址信息。

阅读 2.6k
1 个回答

刷新页面后,id还在的,但是所有变量,包括vuex中的state都是会重置的。
如果单纯只是想解决url传参问题,那么,刷新是不会重置url的,可以在created钩子里过去id并根据id请求参数。

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