uniapp是基于Vue框架开发的跨平台应用开发框架,能够同时生成iOS、Android和H5等多个平台的应用程序。在uniapp开发中,页面之间的参数传递无疑是一个非常核心的部分。接下来我们从多个方面对uniapp页面传值做详细的阐述。
一、uniapp页面传值异步
在uniapp开发中,页面传值的方式有很多种。最为常见的是异步传值方式,即先打开目标页面,然后再传递参数过去。下面是一个简单的传递字符串的例子:
//在当前页面传递参数
uni.navigateTo({
url: 'targetPage?message=hello',
success: function() {
console.log('success');
}
});
//在目标页面接收参数
export default {
data() {
return {
message: ''
}
},
onLoad(options) {
this.message = options.message;
console.log(this.message); //hello
}
}
通过上述代码可以看到,使用uni.navigateTo跳转到目标页面时,在url的后面拼接参数message=hello,目标页面可以通过onLoad生命周期函数中的options参数获取到当前页面传递过来的参数,并将其赋值到本页面的data属性中。
二、uniapp页面传对象
除了传递字符串,我们还可以将对象传递给目标页面。同样地,在当前页面先打开目标页面,然后将对象通过url参数传递过去。目标页面同样可以通过onLoad生命周期函数中的options参数获取到当前页面传递过来的参数,然后将其赋值到本页面的data属性中。下面是一个传递对象的例子:
//在当前页面传递参数
uni.navigateTo({
url: 'targetPage?name=张三&age=18',
success: function() {
console.log('success');
}
});
//在目标页面接收参数
export default {
data() {
return {
person: {}
}
},
onLoad(options) {
this.person.name = options.name;
this.person.age = options.age;
console.log(this.person); //{name: "张三", age: "18"}
}
}
三、uniapp页面传值的几种方式
1. uniapp页面之间传值
在uniapp页面之间传递数据,除了可以使用异步传值方式,还可以使用全局变量、缓存、Vuex等方式实现。下面是使用全局变量传值的示例:
//在main.js文件中定义全局变量
Vue.prototype.global = {
message: ''
}
//在当前页面设置全局变量的值
this.global.message = 'hello';
//在目标页面获取全局变量的值
console.log(this.global.message); //hello
2. uniapp页面传参数
除了使用url参数传递数据,还可以在跳转页面时通过query参数传递数据。与url参数传递数据的方式类似,只需要在生成路由时传递参数即可。下面是一个使用query参数传递数据的示例:
//在当前页面传递参数
uni.navigateTo({
url: 'targetPage?name=张三&age=18',
query: {
message: 'hello'
},
success: function() {
console.log('success');
}
});
//在目标页面获取query参数的值
console.log(this.$route.query.message); //hello
3. uniapp页面之间传递参数
在uniapp中,页面之间可以通过事件总线传递参数。我们可以在全局挂载一个事件总线,然后不同的页面通过事件总线进行传递信息。下面是使用事件总线传递参数的示例:
//在main.js文件中定义事件总线
Vue.prototype.eventBus = new Vue();
//在发送页面发送事件
this.$eventBus.$emit('message', 'hello');
//在接收页面接收事件
mounted() {
this.$eventBus.$on('message', message => {
console.log(message); //hello
})
}
四、uniapp传值方法
在uniapp中,页面之间的传值方式非常多,我们可以根据不同的需求选择合适的传值方式。下面是一个汇总uniapp传值方法的示例:
export default {
data() {
return {
person: {},
message: '',
count: 0
}
},
computed: {
doubleCount() {
return this.count * 2;
}
},
methods: {
handleClick() {
//使用异步传值方式
uni.navigateTo({
url: 'targetPage?name=张三&age=18',
success: function() {
console.log('success');
}
});
//使用全局变量传值方式
this.global.message = 'hello';
//使用query参数传值方式
uni.navigateTo({
url: 'targetPage?name=张三&age=18',
query: {
message: 'hello'
},
success: function() {
console.log('success');
}
});
//使用事件总线传递参数
this.$eventBus.$emit('message', 'hello');
}
}
}
五、uniapp组件传值
在uniapp中,组件之间也需要传值。与页面传值相同,我们也可以通过props、$emit、事件总线等方式进行组件之间的传值。下面是一个使用props传值的示例:
//在父组件中传递参数原创文章,作者:PAPS,如若转载,请注明出处:https://www.506064.com/n/149384.html
微信扫一扫
支付宝扫一扫