首页 前端知识 vue返回上一页并传递参数

vue返回上一页并传递参数

2024-01-30 10:01:55 前端知识 前端哥 249 770 我要收藏

需求:从A页面跳转到B页面,从B页面再返回至A页面,并传递参数。

1、使用sessionStorage或者localStorage

B页面返回之前将数据放置在sessionStorage里面

sessionStorage.setItem('searchKeyword', JSON.stringify({ fundname: '易方达基金', fundcode: '110011' }))
this.$router.go(-1)

返回到上一个页面之后,A页面拿到数据,再清空sessionStorage

const searchKeyword = JSON.parse(sessionStorage.getItem('searchKeyword'))
if (searchKeyword) {
	sessionStorage.removeItem('searchKeyword')
}
2、beforeRouteLeave和beforeRouteEnter

B页面设置beforeRouteLeave,代码如下:

beforeRouteLeave (to, from, next) {
    to.query.fundname = '易方达基金'
    to.query.fundcode = '110011'
    next()
}

A页面设置beforeRouteEnter,代码如下:

export default {
	data () {
    	return {
    		fundname: '',
    		fundcode: ''
    	}
    },
    beforeRouteEnter (to, from, next) {
    	next(vm => {
        	vm.fundname = to.query.fundname
        	vm.fundcode = to.query.fundcode
      	})
	}
}
3、vuex传值
  1. store文件配置
export default new Vuex.Store({
  state: {
    searchKeyword: {}
  },
  getters: {
    searchKeyword: state => state.searchKeyword
  },
  mutations: {
    SET_KEYWORD (state, payload) {
      state.searchKeyword = payload
    }
  },
  actions: {
    setKeyword ({ commit }, value = {}) {
      commit('SET_KEYWORD', value)
    }
  }
})
  1. B页面组件使用
this.$store.dispatch('setKeyword', JSON.stringify({ fundname: '易方达基金', fundcode: '110011' }))
  1. A页面组件使用
computed: {
    ...mapGetters({
      searchKeyword: 'searchKeyword'
    })
}
4、EventBus使用

EventBus 是一种用于实现发布-订阅模式的开源事件总线库。它可以用于在应用程序中不同组件之间进行解耦的事件通信。通过注册和发布事件,不同的组件可以订阅感兴趣的事件并在事件发生时接收通知。这种方式可以简化组件之间的通信和协作,提高代码的可维护性和可扩展性。在 Android 开发中,EventBus 经常被用来简化组件之间的通信。

用法:

  1. 在main.js中全局初始化EventBus
Vue.prototype.$EventBus = new Vue()
  1. 在B页面组件中向EventBus发送事件
this.$EventBus.$emit('searchKeyword', JSON.stringify({ fundname: '易方达基金', fundcode: '110011' }))
this.$router.go(-1)
  1. 在A页面组件中接收事件
mounted () {
    this.$EventBus.$on('searchKeyword', (data) => {
      console.log(data)
    })
}
  1. 移除监听
beforeDestroy () {
    this.$EventBus.$off('searchKeyword')
}
转载请注明出处或者链接地址:https://www.qianduange.cn//article/839.html
标签
评论
会员中心 联系我 留言建议 回顶部
复制成功!