uniapp不同页面传参

uniapp不同页面传参

在进行uniapp开发时,我们需要跨页面传递参数,这是一个比较常见的需求。uniapp提供了多种方法进行页面传参,本文将介绍uniapp中不同页面之间传参的方法。

1. url传参

url传参是一种比较常见的传参方法,相比其他传参方法,使用简单,无需安装额外插件。在uniapp中使用url传参,我们需要在路由配置中进行参数配置。

例如,我们要在A页面跳转到B页面,并传递参数num=1,可以在A页面使用uni.navigateTo方法进行跳转:

uni.navigateTo({

url: '/pages/b/b?num=1',

})

在B页面中可以通过this.$route.query来获取url中携带的参数:

export default {

onLoad() {

const num = parseFloat(this.$route.query.num)

console.log(num)

},

}

针对不同的参数类型,我们可以选择使用不同的解析方法:

解析整形参数:

parseInt(this.$route.query.num)

解析浮点型参数:

parseFloat(this.$route.query.num)

解析布尔型参数:

// 如果参数值为true,则返回true,否则返回false

this.$route.query.isTrue === 'true'

2. 属性传参

属性传参是一种通过组件属性来进行传参的方法。在父组件中,我们可以直接通过在子组件中加入属性的方式来传递参数。

例如,在A页面中使用组件B,并传递参数num=1,我们可以在A页面的template中这样写:

在组件B中,我们可以通过props来接收num参数:

export default {

props: {

num: {

type: Number,

default: 0,

},

}

}

此时,B组件的num属性值为1。

3. vuex状态管理传参

在uniapp中,我们也可以使用vuex来进行状态管理,从而实现页面传参的需求。相比其他传参方式,vuex的特点是全局共享状态,可以方便的在不同的页面之间进行传参。

例如,在A页面中要将参数num=1传递给B页面,在vuex中我们可以这样定义一个全局变量:

const store = new Vuex.Store({

state: {

num: 0,

},

mutations: {

SET_NUM(state, num) {

state.num = num

},

},

})

在A页面中,我们可以通过调用mutations中的SET_NUM方法来将num值更新到vuex中:

export default {

mounted() {

this.$store.commit('SET_NUM', 1)

},

}

在B页面中,可以通过this.$store.state来获取num参数的值:

export default {

mounted() {

const num = this.$store.state.num

console.log(num)

},

}

4. EventBus事件总线传参

EventBus是一种通过发布订阅模式实现的事件传递机制,可以实现在任意两个组件之间传递参数。使用EventBus需要引入事件总线文件,并在需要传递参数的组件中加入对应事件的监听。

例如,在A页面中使用EventBus来传递num参数到B页面:

1. 在src目录下创建eventbus.js文件,并定义EventBus:

import Vue from 'vue'

export const EventBus = new Vue()

2. 在A页面中发布事件并传递参数:

import { EventBus } from '@/eventbus'

export default {

mounted() {

EventBus.$emit('changeNum', 1)

},

}

3. 在B页面中监听事件并获取参数:

import { EventBus } from '@/eventbus'

export default {

created() {

EventBus.$on('changeNum', num => {

console.log(num)

})

},

}

以上就是uniapp中不同页面传参的方法。我们可以根据实际需求选择不同的方法进行传参。对于数据类型的传递,在接收数据时需要注意数据类型的转换,否则可能会导致传参失败或数据异常的情况。

免责声明:本文来自互联网,本站所有信息(包括但不限于文字、视频、音频、数据及图表),不保证该信息的准确性、真实性、完整性、有效性、及时性、原创性等,版权归属于原作者,如无意侵犯媒体或个人知识产权,请来电或致函告之,本站将在第一时间处理。猿码集站发布此文目的在于促进信息交流,此文观点与本站立场无关,不承担任何责任。