微信小程序携带参数分享在分享页判断用户登录状态 ,没有登录的话先跳转登录页面在携带参数返回接收页面

说明

分享功能是微信小程序最常用功能,携带参数分享可以让用户进来看到界面信息。

分享功能的实现

用户打开分享的链接,建议先进入首页方便区分进入小程序的场景,在首页判断是分享进来的还是扫描二维码进来或者是从别的小程序跳转进来。不先进入首页的话有时候在接收页返回的时候无法返回。

先添加分享事件

/pages/comment/index为小程序的首页,携带了用户id、action为share_card是区分分享进入、params是携带的对象

 /**
     * 用户点击右上角分享
     */
    onShareAppMessage() {

        let card = this.data.item;
        let user = this.data.user;
        let content = this.data.content;


        // 分享携带的参数
        let params = {
            id: card.id,
            money: card.money,
            img_url: card.img_url,
        }

        // 用户打开分享进入的页面
        var path = '/pages/comment/index?parent_id=' + user.user_id + '&action=share_card&params=' + JSON.stringify(params);
      
        return {
            title: '分享的标题',
      
            path: path
        }

    }

用户点击分享链接首先进入首页

在首页onload方法中判断是否有action参数并且action为share_card,该参数是分享的时候携带的,有的话再携带params参数跳转进入

<think>好的,我现在需要帮助用户了解如何在微信小程序接收来自其他页面的数据。根据用户的问题,我需要整理出不同的方法,并结合提供的参考资料进行说明。 首,我得回忆一下微信小程序页面间通信方式。根据提供的引用资料,有几个方法被提到:URL参数传递、事件通道(Event Channel)、全局变量、本地存储以及使用Message。不过仔细看一下用户提供的引用,Message是引用[1]中提到的,而引用[5]提到了URL参数处理特殊字符的问题,引用[2]总结了几种常用方法,包括URL参数、事件通道、全局变量和本地存储。引用[4]和[3]可能不太相关,但需要确认。 用户的问题是接收数据的方法,所以每个方法的发送和接收都需要说明。比如URL参数传递,发送方在跳转时通过URL带参数接收方在onLoad中通过options获取。这里要注意特殊字符的处理,需要encodeURIComponent和decodeURIComponent,如引用[5]提到的。 然后是事件通道Event Channel,发送方获取事件对象并emit事件,接收方通过on监听。这种方法适合页面返回时传数据,比如wx.navigateTo的success回调中建立事件通道。引用[2]中提到了事件通道的方法,但可能需要具体代码示例。 全局变量的话,可以用getApp()获取应用实例,设置全局数据,接收方在onShow或onLoad中读取。不过需要注意生命周期,确保数据及时更新。 本地存储方面,发送方使用wx.setStorageSync存储,接收方在onShow中用wx.getStorageSync获取。这种方法适合数据需要持久化的情况,但可能会有延迟问题。 另外,引用[1]提到的Message方式,但根据微信官方文档,可能指的是页面间通信的一种机制,需要确认具体用法。例如,通过getCurrentPages获取页面栈,然后调用上一个页面的方法。不过这种方法可能在部分情况下适用,比如从下级页面返回上级时传递数据。 需要确保每个方法的步骤清晰,并给出示例代码。同时,根据用户的引用资料,正确标注引用来源。例如,URL参数处理特殊字符引用[5],事件通道和全局变量引用[2],本地存储引用[2],Message方式引用[1]。 还要注意用户的问题是关于接收数据,所以每个方法的接收步骤要详细说明,可能涉及生命周期函数,比如onLoad、onShow、onUnload等。 最后,生成相关问题,需要围绕页面通信的其他方法、不同场景的选择、数据同步或安全等角度提问,确保问题相关且有深度。</think>在微信小程序接收其他页面发送数据的方法有以下几种: ### 一、URL参数接收 发送方通过`wx.navigateTo`跳转携带参数: ```javascript // 发送页面 wx.navigateTo({ url: '/pages/receivePage?name=张三&id=123' }) ``` 接收方在`onLoad`生命周期获取: ```javascript // 接收页面 onLoad(options) { console.log(options.name) // 输出"张三" console.log(options.id) // 输出"123" } ``` 注意:需用`encodeURIComponent()`处理特殊字符[^5] ### 二、事件通道(Event Channel) 1. 发送方建立通道: ```javascript // 发送页面 const eventChannel = this.getOpenerEventChannel() eventChannel.emit('sendData', { key: 'value' }) ``` 2. 接收方监听事件: ```javascript // 接收页面 const eventChannel = this.getOpenerEventChannel() eventChannel.on('sendData', (data) => { console.log(data.key) // 输出"value" }) ``` 适用于页面返回时传递数据[^2] ### 三、全局变量 1. 在`app.js`中定义: ```javascript App({ globalData: { sharedData: null } }) ``` 2. 发送方设置数据: ```javascript const app = getApp() app.globalData.sharedData = { status: '已更新' } ``` 3. 接收方获取数据: ```javascript // 在onShow生命周期 const app = getApp() console.log(app.globalData.sharedData.status) ``` 适合跨多级页面使用 ### 四、本地存储 发送方存储数据: ```javascript wx.setStorageSync('cacheKey', { timestamp: Date.now() }) ``` 接收方读取数据: ```javascript const data = wx.getStorageSync('cacheKey') console.log(data.timestamp) ``` 注意数据量不超过10MB ### 五、页面栈通信 通过获取页面实例直接调用方法: ```javascript // 接收方定义方法 updateData(newData) { this.setData({ info: newData }) } // 发送方调用 const pages = getCurrentPages() const prevPage = pages[pages.length - 2] prevPage.updateData({ msg: '已更新' }) ``` 适用于有明确父子关系的页面[^1]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小李不秃头_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值