刷刷题35(uniapp中级实际项目问题-2)

310 阅读2分钟

1. ‌iOS 底部安全区域留白异常

  • 问题‌:iOS 设备底部内容被安全区域遮挡或留白过多。
  • 解决‌:在 manifest.json 中配置 app-plus 的 safearea 参数,设置 offset: "none" 禁用底部安全区域偏移‌。

2. ‌Button 组件伪元素边框残留

  • 问题‌:Button 组件在部分平台显示默认黑色边框,即使设置 border: none 无效。

  • 解决‌:通过 CSS 覆盖伪元素样式:

    cssCopy Code
    button::after { border: none; display: none; }  
    

    需注意全局样式污染风险‌。


3. ‌H5 端上传文件格式异常

  • 问题‌:uni.uploadFile 在 H5 端上传图片时,后端无法识别文件类型(如后缀名丢失)。
  • 解决‌:手动为 FormData 添加 name 和 type 字段,或使用 uni.chooseImage 返回的 tempFiles 中的 File 对象‌。

4. ‌Textarea 组件点击事件冒泡干扰

  • 问题‌:iOS 设备中点击 Textarea 会意外触发父级元素事件(如页面滚动)。
  • 解决‌:在 Textarea 外层添加 @touchstart.stop 阻止事件冒泡,或使用 catchtouchstart 事件‌。

5. ‌APP 自动登录状态同步问题

  • 问题‌:用户登录信息存储后,多页面间状态同步延迟或失效。
  • 解决‌:结合 Vuex 全局状态管理 + uni.setStorageSync 持久化存储,并在 app.vue 的 onLaunch 中初始化状态‌。

6. ‌导航栏与胶囊按钮高度适配

  • 问题‌:自定义导航栏在 Android/iOS 中与胶囊按钮间距不一致。

  • 解决‌:通过 uni.getSystemInfoSync() 动态计算导航栏高度:

    • iOS:状态栏高度 + 44px
    • Android:状态栏高度 + 48px‌5。

7. ‌页面跳转参数类型隐式转换

  • 问题‌:uni.navigateTo 传递的布尔值参数会被强制转为字符串类型。
  • 解决‌:在目标页面使用 JSON.parse() 或显式类型转换(如 option.flag === 'true')‌。

8. ‌APP 批量上传图片字段冲突

  • 问题‌:真机调试时 uni.uploadFile 批量上传多图,后台仅接收最后一张图片。
  • 解决‌:手动为每个文件对象添加唯一 name 字段,避免后端接收时覆盖同名文件‌。