猿问

关于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跳转过来修改地址信息。


侃侃尔雅
浏览 582回答 1
1回答

LEATH

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

相关分类

JavaScript
我要回答