对于uni.switchTab
切换到的页面,如果使用了类似于uni.switchTab({ url: '/pages/route/route?type=4' })
这样的方式,携带参数的情况会遇到一些问题。uni.switchTab
并不直接支持传递参数,而且 TabBar 页面在切换时可能无法正常获取到传递的参数。
一个常见的解决方案是使用全局状态管理(比如Vuex)或者小程序的全局数据(getApp().globalData
)来在跳转前存储数据,然后在目标页面的onLoad
或onShow
生命周期中获取这些数据。
在跳转前存储参数:
// 在当前页面的某个方法或事件中 uni.setStorageSync('targetPageParams', { type: 4 }); uni.switchTab({ url: '/pages/route/route', });
在目标页面的onLoad
或onShow
中获取参数:
// 在目标页面的 page.js 文件中 export default { onLoad() { // 获取存储的参数 const targetPageParams = uni.getStorageSync('targetPageParams'); console.log('参数:', targetPageParams); // 清除参数(可选) uni.removeStorageSync('targetPageParams'); }, // 其他生命周期函数和配置项 };
这种方法通过全局存储数据的方式,可以在目标页面加载时获取到传递的参数。请注意在使用uni.setStorageSync
时,如果需要,可以在目标页面加载后清除已经使用过的参数。