微信小程序页面之间传递数据

使用路由传递数据:

跳转时将数据使用 ? 拼接在 URL 后面;在另一个页面的 onLoad() 方法的参数中即可获取到传递的参数。

微信小程序对路由传参的大小有限制。

接收数据的页面获取到的都是字符串。也就是说,即使传递数据的页面传递的参数是布尔值或者数值,到了接收数据的页面获取到的也都是字符串。

如果数据中有 ? 等特殊字符,微信会做截取。
解决方法:利用 encodeURIComponent() 和 decodeURIComponent() 对要传递的数据进行编解码。

// 传递数据的页面
const selectData = encodeURIComponent(this.data.path);
wx.redirectTo({
   url: `../order/order?path=${path}`
})

// 接收数据的页面
onLoad(options){
	const path = decodeURIComponent(options.path);
}

如果将对象类型的数据拼接在路径后面,到另一个页面获取时会发现是 "[object,object]",无法使用。
解决方法:利用 JSON.stringify()JSON.parse()

// 传递数据的页面
const selectData = JSON.stringify(this.data.selectData);
wx.redirectTo({
   url: `../order/order?selectData=${selectData}`
})

// 接收数据的页面
onLoad(options){
	const selectData = JSON.parse(options.selectData);
}
// 传递数据的页面
wx.navigateTo({
     url: `../select/select?id=${id}`,
})

// 接收数据的页面
onLoad(options){
	const id = options.id;
}

使用本地存储传递数据:

// 传递数据的页面
wx.setStorageSync('id', 1)

// 接收数据的页面
wx.getStorageSync('id')

使用全局变量传递数据:

  1. app.js 中将数据存储为全局变量。
  2. 在需要使用的页面通过getApp().变量名 获取。
// app.js
App({
	globalData:{
		id: 1
	}
})

// index.js
const app =  getApp()
const id = app.globalData.id

你可能感兴趣的:(微信小程序,微信小程序)