微信小程序页面之间如何传数据
时间: 2024-05-14 08:14:40 浏览: 54
微信小程序页面之间可以通过以下方式传递数据:
1.通过页面跳转时的参数传递:
在跳转页面时可以通过url的query参数传递数据,例如:
```js
wx.navigateTo({
url: '/pages/detail/detail?id=123',
})
```
在目标页面的onLoad生命周期中可以通过options对象获取到传递的参数:
```js
onLoad: function (options) {
console.log(options.id) // 123
}
```
2.通过全局变量传递:
在app.js文件中定义全局变量,例如:
```js
App({
globalData: {
userInfo: null
}
})
```
在需要传递数据的页面中可以通过 getApp() 方法获取到 app 实例,然后通过修改全局变量的方式传递数据,例如:
```js
getApp().globalData.userInfo = { name: 'xxx', age: 20 }
```
在目标页面中通过 getApp() 方法获取到 app 实例,然后获取到全局变量中的数据,例如:
```js
var userInfo = getApp().globalData.userInfo
console.log(userInfo.name) // xxx
console.log(userInfo.age) // 20
```
3.通过事件监听传递:
在需要传递数据的页面中可以通过 wx.eventEmitter 定义一个事件触发器,例如:
```js
const eventEmitter = require('../../utils/eventEmitter.js')
Page({
data: {
name: 'xxx'
},
onTap() {
eventEmitter.emit('nameChanged', this.data.name)
}
})
```
在目标页面中可以通过 wx.eventEmitter 监听事件,例如:
```js
const eventEmitter = require('../../utils/eventEmitter.js')
Page({
data: {
newName: ''
},
onLoad() {
eventEmitter.on('nameChanged', (name) => {
this.setData({ newName: name })
})
}
})
```
以上三种方式都可以实现小程序页面之间的数据传递。
阅读全文