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页面通信的主要内容,如果未能解决你的问题,请参考以下文章

uniapp页面通信

uniapp页面通信

uni-app 与 web-view内嵌网页 双向通信

uniapp页面跳转的几种方法和区别

uniapp页面跳转的几种方法和区别

uniapp开发App引导页