uniapp页面通信
Posted 五花肉三七分
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了uniapp页面通信相关的知识,希望对你有一定的参考价值。
1:导航形式:
uni.navigateTo、uni.redirectTo、uni.relaunch、uni.switchTab、uni.navigateBack
uni.navigateTo(
url:'./home?code=1'
)
//新页面接收后:
onLoad(options)
console.log(options)
console.log(options.code)
<1>:问题
以url形式传的参数如果是字符串形式,那没有问题;但如果是JSON、等其他格式的就需要先转为字符串,而且url还会存在长度限制;所以我们在传参时要做处理:
encodeURIComponent(JSON.stringify(item));
JSON.parse(decodeURIComponent(option.item));
encodeURIComponent()//编码函数
dncodeURIComponent()//解码函数
2:标签形式:
<navigator :url=" './nav?code=999'>参数传递</navigator>
3:uni.$on和uni.$emit
//在子页面定义事件传参
uni.$emit('update',content:'')
//在父页面接受参数
export default
onLoad()
uni.$on('update',function(val)
console.log(val.content);
)
4:uniapp依赖的vue框架带的传参方式
1:页面间通信,
2:路由传参query/params
等
5:hash路由和history路由
这里讲的不是如何传参,而是在hash路由和history路由下传参出现的问题:
1:hash 模式下,仅hash符号之前的内容会被包含在请求中,所以说你直接在浏览器url后面直接加上参数回车,请求会过滤掉hash符号#后面的参数,就会出现你明明传了参数,为什么之后拿的时候找不到的情况。
2:history模式下,前端的URL必须和实际向后端发起请求的URL一致,顾名思义使用history路由模式进行请求时,整个url都会包含在请求中。
const router = new Router(
mode: 'history', // 模式,默认hash
base: '', // 基础路径
routes: [...]
)
以上是关于uniapp页面通信的主要内容,如果未能解决你的问题,请参考以下文章