uniapp 路由传值
时间: 2023-09-02 14:15:54 浏览: 104
uniapp与webview之间的相互传值的实现
在uni-app中,可以通过以下方式进行路由传值:
1. URL传参
在跳转页面时,可以通过URL传参的方式将数据传入下一个页面。例如:
```
// 页面A跳转到页面B,并传递参数id=123
uni.navigateTo({
url: '/pages/b/b?id=123'
})
```
在页面B中,可以通过以下方式获取参数:
```
// 在页面B中获取传递过来的参数
export default {
onLoad(options) {
console.log(options.id) // 输出 123
}
}
```
2. Vuex
如果需要在多个页面之间共享数据,可以使用Vuex进行状态管理。例如:
- 在store中定义state:
```
const store = new Vuex.Store({
state: {
userInfo: null
}
})
```
- 在页面中获取和修改state:
```
// 获取state
this.userInfo = this.$store.state.userInfo
// 修改state
this.$store.commit('setUserInfo', userInfo)
```
- 在mutations中定义修改state的方法:
```
mutations: {
setUserInfo(state, userInfo) {
state.userInfo = userInfo
}
}
```
3. uni-app提供的API
uni-app还提供了一些API,可以方便地进行路由传参。例如:
- uni.navigateBack()方法可以返回上一个页面,并传递参数:
```
// 在页面A中返回上一个页面,并传递参数id=123
uni.navigateBack({
delta: 1,
success: function () {
// 向上一个页面传递参数
var pages = getCurrentPages()
var prevPage = pages[pages.length - 2] // 上一个页面
prevPage.setData({
id: 123
})
}
})
```
- uni.$emit()和uni.$on()方法可以在页面之间进行事件传递:
```
// 在页面A中发送事件
uni.$emit('event', {id: 123})
// 在页面B中接收事件
uni.$on('event', function (data) {
console.log(data.id) // 输出 123
})
```
阅读全文