问题一:页面跳转如何传递复杂数据
典型报错:"Error: Only data that can be JSON.stringify can be set."
问题分析:
小程序页面跳转通过URL参数传递数据时,只能传递字符串类型,无法直接传递对象或数组
解决方案:
问题二:返回上一页如何更新数据
常见场景:从列表页进入编辑页,编辑后返回列表页需要刷新数据
问题分析:
小程序默认返回不会触发页面刷新,需要主动触发更新
解决方案:
问题三:全局状态管理混乱问题
典型症状:多个页面修改全局数据导致状态不一致
解决方案:封装全局状态管理器
问题四:页面栈超过10层限制
典型错误:"navigateTo:fail webview count limit exceed"
问题分析:
小程序最多只能打开10个页面,超过限制会报错
解决方案:
问题五:跨页面同步数据性能优化
痛点场景:多个页面需要实时同步同一数据源(如购物车)
解决方案:使用共享WebWorker
最佳实践总结
数据传递:
- 简单数据:使用URL参数
- 复杂数据:JSON序列化 + encodeURIComponent
- 大数据:使用全局状态管理
页面通信:
- 父子页面:事件通道 (getOpenerEventChannel)
- 任意页面:全局事件总线/状态管理
性能优化:
- 超过2KB数据避免使用URL传递
- 频繁更新数据使用WebWorker
- 及时销毁无用监听器
导航控制:
- 注意页面栈深度限制
- 合理使用redirectTo/reLaunch
- 复杂场景使用自定义导航管理器
避坑提示:页面间通信务必在onUnload
中清理事件监听,避免内存泄漏!
这些解决方案已在多个千万级用户小程序中验证,可直接应用到你的项目中。如果遇到其他具体问题,欢迎在评论区交流讨论!