微信小程序常用的传值

1.通过 URL 传参

在页面跳转时,可以在 URL 中携带参数进行传递,然后在目标页面的 onLoad 生命周期中获取参数。

复制代码
// 在页面 A 中跳转到页面 B 并传递参数
wx.navigateTo({
  url: '/pages/detail/index?id=123'
});

// 在页面 B 的 onLoad 生命周期中获取参数
onLoad: function (options) {
  console.log(options.id); // 输出 123
}

通过 navigateTo 方法传递数据的方式比较常见,可以通过 wx.setStorageSync 方法在当前页面设置数据,然后在目标页面的 onLoad 生命周期中使用 wx.getStorageSync 方法获取数据。以下是一个示例代码来演示这种传递数据的方式:

在页面 A 中设置数据并跳转到页面 B:

复制代码
// 在页面 A 中设置数据
wx.setStorageSync('key', 'value');

// 使用 navigateTo 方法跳转到页面 B
wx.navigateTo({
  url: '/pages/pageB/pageB'
});

在页面 B 的 onLoad 生命周期中获取数据:

复制代码
Page({
  onLoad: function(options) {
    // 在页面 B 的 onLoad 生命周期中获取数据
    var data = wx.getStorageSync('key');
    console.log(data); // 输出 'value'
  }
});

3.通过全局变量传值

可以在 app.js 文件中定义全局变量,然后在任何页面中都可以访问和修改这些全局变量。

app.js 文件中定义全局变量:

复制代码
// app.js
App({
  globalData: {
    userInfo: null
  }
});

在任意页面中访问和修改全局变量:

复制代码
// 在任意页面中访问和修改全局变量
// 设置全局变量
getApp().globalData.userInfo = { name: 'Alice', age: 30 };
// 获取全局变量
console.log(getApp().globalData.userInfo); // 输出 { name: 'Alice', age: 30 }

4.通过事件总线传值

可以使用事件总线进行页面间通信,创建一个事件总线实例,然后在需要传递数据的页面发送事件,在需要接收数据的页面监听事件。

1.创建一个事件总线实例:

复制代码
// eventBus.js
const EventBus = {
  events: {},
  on: function(event, callback) {
    if (!this.events[event]) {
      this.events[event] = [];
    }
    this.events[event].push(callback);
  },
  emit: function(event, data) {
    if (this.events[event]) {
      this.events[event].forEach(callback => {
        callback(data);
      });
    }
  }
};

module.exports = EventBus;

2.在发送数据的页面发送事件

复制代码
// pageA.js
const eventBus = require('../../utils/eventBus');

// 发送事件
eventBus.emit('dataUpdated', { name: 'Bob', age: 25 });

3.在接收数据的页面监听事件:

复制代码
// pageB.js
const eventBus = require('../../utils/eventBus');

Page({
  onLoad: function() {
    // 监听事件
    eventBus.on('dataUpdated', (data) => {
      console.log(data); // 输出 { name: 'Bob', age: 25 }
    });
  }
});

这些都是微信小程序中常用的页面间传值方式

相关推荐
黑客老李8 小时前
web渗透实战 | js.map文件泄露导致的通杀漏洞
安全·web安全·小程序·黑客入门·渗透测试实战
游戏开发爱好者818 小时前
日常开发与测试的 App 测试方法、查看设备状态、实时日志、应用数据
android·ios·小程序·https·uni-app·iphone·webview
2501_9151063219 小时前
app 上架过程,安装包准备、证书与描述文件管理、安装测试、上传
android·ios·小程序·https·uni-app·iphone·webview
2501_9151063220 小时前
使用 Sniffmaster TCP 抓包和 Wireshark 网络分析
网络协议·tcp/ip·ios·小程序·uni-app·wireshark·iphone
宠友信息21 小时前
2025社交+IM及时通讯社区APP仿小红书小程序
java·spring boot·小程序·uni-app·web app
“负拾捌”1 天前
python + uniapp 结合腾讯云实现实时语音识别功能(WebSocket)
python·websocket·微信小程序·uni-app·大模型·腾讯云·语音识别
换日线°2 天前
NFC标签打开微信小程序
前端·微信小程序
光影少年2 天前
AIGC + Taro / 小程序
小程序·aigc·taro
2501_915918412 天前
在 iOS 环境下查看 App 详细信息与文件目录
android·ios·小程序·https·uni-app·iphone·webview
2501_916007472 天前
没有 Mac 用户如何上架 App Store,IPA生成、证书与描述文件管理、跨平台上传
android·macos·ios·小程序·uni-app·iphone·webview