1.概述

在手机端,我们使用的时UNIAPP框架。在数据传递的时候,我们使用

var url=`/pages/${item.module}/${item.routeName}`+params;
uni.navigateTo({url: url})

参数跟在组件后面传递。这种方式会在浏览器中显示编码过的参数,不是很优雅。

2. 解决办法

可以使用命名路由。

比如:

{
    "name": "customForm",
    "path": "pages/list/CustomForm",
    "style": {
        "navigationBarTitleText": "单据录入"
    }
},

我们是可以使用如下代码传递路由。

router.push({name:"customForm",params:{}})

这种方式其实和 vue-router 还是有些差别,当params的参数有复杂的JSON的时候,打开的页面取数据方法是有所变化的。

需要通过 this.$route.params.query 来获取数据。

推荐使用VUEX传递数据

比较理想的方法传递参数可以使用 vuex 。

具体做法为:

  • 在VUEX增加代码
import Vue from 'vue'
import Vuex from 'vuex'

Vue.use(Vuex)

const store = new Vuex.Store({
  state: {
    //传递临时数据
    tmpData:{}
  },
  mutations: {
    setTmpData(state,tmpData){
      state.tmpData = tmpData
    }
  },
})

export default store
  • 调用VUEX 设置数据
//构造方法
...mapMutations(['setTmpData']),

//在页面跳转之前传递数据。
gotoCustomForm(data){
    this.setTmpData(data);
    router.push({name:"customForm"})
},
  • 获取传递的数据
computed: {
            ...mapState(['curUser','tmpData']),
        },
        created() {
      //获取临时传递的参数。
        this.params = this.tmpData;

使用mapState 获取数据。

文档更新时间: 2021-09-13 10:58   作者:zyg