首页 > web前端 > uni-app > uniapp如何传递参数

uniapp如何传递参数

PHPz
发布: 2023-04-23 09:32:25
原创
9870 人浏览过

随着移动应用的普及和用户需求的不断变化,越来越多的开发者选择使用uniapp进行开发。然而,随之带来的一个重要问题就是如何在不同页面之间传递参数。在本文中,将会为大家详细介绍uniapp中如何传递参数。

一、通过URL传递参数

URL是一种描述文件在计算机网络中位置的方式。在uniapp中,可以通过URL传递参数。在web开发中,可以通过query string来传递参数。在uniapp中有两种方式来进行URL传参:路由跳转和h5页面跳转:

1.路由跳转

uniapp中提供了一些路由相关的API,其中,uni.navigateTo和uni.redirectTo这两个API可以在跳转时携带参数。在跳转时,可以将参数以对象的形式传递给URL,并以query string(查询字符串)的形式来表示。如下所示:

uni.navigateTo({
  url: '/pages/detail/detail?id=123&name=apple'
})
登录后复制

在被跳转的页面中,可以通过this.$route.query对象访问到传递的参数。如下所示:

export default {
  mounted() {
    console.log(this.$route.query.id) // 123
    console.log(this.$route.query.name) // 'apple'
  }
}
登录后复制

需要注意的是,通过路由跳转传递的参数会保存在导航栏的历史记录中,因此,可以通过返回操作返回上一个页面,并携带参数。

2.h5页面跳转

在uniapp中,可以通过location.search来获取URL中的查询字符串和参数,例如:

var url = window.location.search; // ?id=123&name=apple
var obj = {};
if (url.indexOf("?") != -1) {
  url = url.substr(1); // id=123&name=apple
  var arr = url.split("&");
  for(var i = 0; i < arr.length; i++) {
    var tmp = arr[i].split("=");
    obj[tmp[0]] = tmp[1];
  }
}
console.log(obj.id); // 123
console.log(obj.name); // 'apple'
登录后复制

需要注意的是,在h5页面中跳转时,需要手动对URL进行处理。

二、通过Vuex传递参数

在uniapp中,可以使用Vuex进行状态管理,因此,我们也可以通过Vuex来进行参数传递。

  1. 在页面中创建store

在每个页面中,我们需要首先创建一个store来进行参数传递。如下所示:

import Vue from 'vue'
import Vuex from 'vuex'

Vue.use(Vuex)

const store = new Vuex.Store({
  state: {
    id: '',
    name: ''
  },
  mutations: {
    SET_ID(state, id) {
      state.id = id
    },
    SET_NAME (state, name) {
      state.name = name
    }
  }
})

export default store
登录后复制

在页面中引入store,如下所示:

import store from '@/store/index'
登录后复制
  1. 在页面中传递参数

在需要传递参数的页面中,可以通过提交mutation来将参数传递到store中。如下所示:

export default {
  methods: {
    handleClick() {
      this.$store.commit('SET_ID', '123')
      this.$store.commit('SET_NAME', 'apple')
    }
  }
}
登录后复制

在提交mutation后,store中的对应state就被更新了。

  1. 在页面中获取参数

在需要获取参数的页面中,可以通过$store.state对象来获取store中存储的参数。如下所示:

export default {
  mounted() {
    console.log(this.$store.state.id) // 123
    console.log(this.$store.state.name) // 'apple'
  }
}
登录后复制

需要注意的是,使用Vuex进行参数传递需要引入Vuex,并且需要在每个页面中都创建store。

总结

在uniapp中,我们可以通过URL和Vuex两种方式来进行参数传递。对于简单的参数传递,我们可以选择使用URL传参,并且可以根据具体情况选择路由跳转或h5页面跳转。对于复杂的场景,我们可以选择使用Vuex来进行参数传递,但需要注意在每个页面中创建store。无论使用哪种方式,都需要根据实际需求进行选择。

以上是uniapp如何传递参数的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板