微信小程序里面把info页面的inputValue传到my页面的name里面,用发布订阅实现

本文详细描述了微信小程序中如何通过eventManager实现my和info页面间的事件订阅、发布及数据处理,强调了内存管理的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

需要在my页面中订阅事件,并且在info页面中发布事件,这样才能实现将info页面的inputValue传递到my页面的name中。

App({
  eventManager: {
    events: {},
    subscribe(event, callback) {
      if (!this.events[event]) {
        this.events[event] = [];
      }
      this.events[event].push(callback);
    },
    publish(event, data) {
      const callbacks = this.events[event];
      if (callbacks) {
        callbacks.forEach(callback => {
          callback(data);
        });
      }
    },
    unsubscribe(event, callback) {
      const callbacks = this.events[event];
      if (callbacks) {
        const index = callbacks.indexOf(callback);
        if (index !== -1) {
          callbacks.splice(index, 1);
        }
      }
    }
  },
  globalData: {
    avatarUrl: '',
    userName: '',
    name: '456',
    userInfo: null
  },
  onLaunch: function () {
    // ...
  }
});

然后,在my页面中正确地订阅事件和处理事件:

const app = getApp();

Page({
  // ... 其他代码

  onLoad() {
    // 从全局数据或缓存中获取姓名
    this.setData({
      avatarUrl: app.globalData.avatarUrl,
      userName: app.globalData.userName,
      name: app.globalData.name,
    });

    // 订阅事件
    app.eventManager.subscribe('inputValueChange', this.handleInputValueChange);
  },

  // 处理事件的回调函数
  handleInputValueChange(inputValue) {
    this.setData({
      name: inputValue
    });
  },

  onUnload() {
    // 取消订阅事件,确保在页面卸载时取消订阅,防止内存泄漏
    app.eventManager.unsubscribe('inputValueChange', this.handleInputValueChange);
  },

  // ... 其他代码
});

最后,在info页面中发布事件:

const app = getApp();

Page({
  // ... 其他代码

  // 点击提交按钮时发布事件
  onSubmit() {
    // ... 其他逻辑
    app.eventManager.publish('inputValueChange', this.data.inputValue);
  },

  // ... 其他代码
});

通过以上步骤,当你在info页面点击提交按钮时,会发布名为inputValueChange的事件,并将inputValue作为数据传递出去。在my页面中订阅了该事件,当事件被发布时,会触发handleInputValueChange函数,将inputValue更新到my页面的name属性中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值