微信小程序 路由跳转与传值

本文详细介绍了微信小程序中的路由跳转方式,包括生命式navigator跳转和编程式导航跳转,如navigateTo、switchTab、redirectTo和reLaunch等,并讲解了不同跳转方式的特点。同时,还探讨了小程序的路由传值方法,如url路径拼接传值和自定义事件传值,提供了具体的代码示例。

小程序路由跳转方式: 

    1, 生命式navigator跳转
    <navigator url="/pages/camera/camera">非tabbar跳转</navigator>
    <navigator url="/pages/tags/tags" open-type="redirect">非tabbar跳转</navigator>
    <navigator open-type="switchTab" url="/pages/user/user">tabbar跳转</navigator>
    <navigator url="/pages/index/index" open-type="reLaunch">任意跳转</navigator>
    <navigator open-type="navigateBack">返回上一页</navigator>
    <navigator open-type="exit" target="miniProgram">退出小程序</navigator>

    2, 编程式导航跳转   非tabbar跳转 和 tabbar跳转
    保留当前页面,跳转到应用内的某个页面。但是不能跳到 tabbar 页面,使用 wx.navigateBack 可以返回到原页面。小程序中页面栈最多十层
    wx.navigateTo({
      url: '/pages/event/event',
    })
    跳转到 tabBar 页面,并关闭其他所有非 tabBar 页面
    wx.switchT

微信小程序中,H5 页面向 webview 可以通过以下几种常见方法实现: #### postMessage 方法 在 H5 页面中,可以使用 `window.postMessage` 方法向小程序的 `web-view` 组件发送消息。在小程序端,通过 `bindmessage` 事件监听接收消息。 **H5 页面代码示例(JavaScript)**: ```javascript // 向小程序发送消息 window.postMessage({ key: 'value', // 可以根据需求添加更多数据 }, '*'); ``` **小程序端代码示例(wxml 和 js)**: ```xml <!-- wxml 文件 --> <web-view src="your_h5_url" bindmessage="handleMessage"></web-view> ``` ```javascript // js 文件 Page({ handleMessage(e) { console.log('接收到 H5 来的消息:', e.detail.data); // 在这里处理接收到的数据 } }) ``` #### hash 带参 H5 携带当前地址跳转小程序页面,在做出一些更新操作后,把相关参数拼接在 H5 地址后面,监听 hash 变化,触发相关更新。在小程序 `webview` 里添加 `onShow` 钩子,便于路由返回时触发。 **实现代码示例**: ```javascript // 小程序 webview 的 onShow 钩子 onShow() { const { backUrl, backCompleteUrl } = hybridBridge; console.log('需要刷新的 url', backCompleteUrl); // https://baidu.com#token=xxx&refresh=xxx if (!backUrl) return; this.setData({ src: backCompleteUrl }); hybridBridge.$setBridgeParams(); } ``` #### 模拟实时 通过 `setInterval` 模拟实时递不同参数到 H5。 **小程序端代码示例**: ```javascript Component({ data: { url: `http://127.0.0.1:8080/home?type=wx`, hashStr: '', }, methods: { onLoad: function () { const _this = this; setInterval(() => { // 此处模拟动态改变 url 的 hash 给 h5 const postData = { name: 'zhangsan', time: +new Date() }; _this.setData({ hashStr: `#time=${JSON.stringify(postData)}` }); }, 2000); }, } }); ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值