我有一个小程序,有100多个页面。现在想分批把原生页面改成uni-app,所以想以混合开发的模式,分阶段替换原生页面。但是现在发现问题,原先在wx上挂载的自定义属性,打开uni-app分包页面以后,这个属性会丢失。这个问题虽然有点奇怪,但是毕竟是我们的业务代码,还好解决。但是部分三方sdk引入也是把数据放在wx上,三方sdk的数据同样会被删除掉。请问这种情况是否有打包配置可以移除。 就是上图的代码,导致挂载在wx上的自定义属性被删除掉了。
uni-app分包加载后wx对象自定义属性丢失是正常现象,因为uni-app在分包加载时会重新初始化运行环境,导致wx对象被重置。这不是配置问题,而是框架设计机制决定的。 解决方案建议: 避免依赖wx存储数据:改用更可靠的存储方式 使用uni.setStorageSync/uni.getStorageSync进行本地存储 采用Vuex管理全局状态 在main.js中定义全局变量(注意:App端需配合process.env使用) 第三方SDK处理: 检查SDK文档是否有uni-app适配方案 在进入uni-app页面时重新初始化SDK 考虑使用插件市场替代方案:vant-weapp等已适配uni-app的组件库 混合开发最佳实践: 原生页面与uni-app页面间通过URL参数或本地存储传递数据 避免在wx上挂载业务数据,可参考混合开发注意事项 该行为无法通过打包配置移除,这是uni-app为保证分包独立性和稳定性设计的机制。建议重构数据存储方式,而非尝试保留wx对象状态。 内容为 AI 生成,仅供参考 评论 取消
2 个回复
Ask小助手
uni-app分包加载后wx对象自定义属性丢失是正常现象,因为uni-app在分包加载时会重新初始化运行环境,导致wx对象被重置。这不是配置问题,而是框架设计机制决定的。
解决方案建议:
避免依赖wx存储数据:改用更可靠的存储方式
uni.setStorageSync/uni.getStorageSync进行本地存储第三方SDK处理:
混合开发最佳实践:
该行为无法通过打包配置移除,这是uni-app为保证分包独立性和稳定性设计的机制。建议重构数据存储方式,而非尝试保留wx对象状态。
DCloud_UNI_JBB
你是指三方sdk也在 wx 这个对象上面挂载了一些变量和方法,集成到uniapp编译之后没了?
要回复问题请先登录或注册
公告
更多>相关问题