Skip to content

开发遇到的问题

skyline

可以通过Skyline 更新日志随时了解 skyline 的问题解决进度

flex 相关问题

文档说默认元素的displayflex,但flex-direction默认是column

[基础库3.6.6/skyline1.3.3] 下还不支持flexgap,需要通过grid-view实现。这个问题在 skyline1.4.1解决

scroll-view 问题

type属性在文档中是可选,但横向滚动时必须指定(比如type="custom"),否则展示有问题

既然默认所有元素都是 flex,那为啥scroll-view的子元素高度撑不起它呢?这个问题在 skyline1.4.2解决,在此之前,都需要显式设置scroll-view的高度

页面 background-color: #fff 无效?

无论是全局样式、本页面样式,设置后看着都不像纯白色

但是设置其它颜色又都有效果,存疑,可能是视觉效果

通性

自定义 tabbar 的 tab 激活问题

tab 激活的几种场景:

  • 正常进入,默认激活首页,用户再手动点击其它 tab

    该场景只需要设置selected的默认值和onSwitchTab事件即可

  • 用户从某个分享页或是其它场景启动,没在首页

    需要设置ready的生命周期函数,通过getCurrentPages获取当前页面来动态设置 tab

  • 用户在某个页面,完成交互后代码switchTo到了某个 tabbar 页面

    此时由于自定义 tabbar 无法监听页面生命周期函数,也不能二次触发ready。只能把激活的逻辑判断写在对应的页面里。还有种更省事的办法就是尽量规避这种场景(比如只switchTo到最近激活的一个 tabbar 页面)

tabbar 遮挡问题

参考小程序 tabBar 层级 z-index 问题,自定义弹窗遮挡不住

按官方的话说,客户端原生的就是遮不住。(有人说在 webview 下设置 popup 根的z-index无限大可以,未尝试)

因此如果不是自定义 tabbar,可以通过wx.hideTabBarwx.showTabBar来短暂隐藏

如果是自定义 tabbar,先在 tabbar 的data中定义isVisible,接着在 tabbar 的模板中通过isVisible来控制 tabbar 的display状态,最后在其它页面/组件中通过this.getTabbar获取实例来改变isVisible的值,以下是 skyline 下的示例代码:

js
Component({
  methods: {
    openPopup() {
      this.getTabBar((tabBar) => {
        tabBar.setData({
          isVisible: false,
        })
      })
    },
    closePopup() {
      this.getTabBar((tabBar) => {
        tabBar.setData({
          isVisible: true,
        })
      })
    },
  },
})

iOS 日期格式

new Date('2021-7-7 14:59:32')本地开发是个正常日期对象,iOS 真机是NAN

开发工具监测到这种写法时,也会提示:

new Date("2025-01-21 09:00:00") 在部分 iOS 下无法正常使用,iOS 只支持 "yyyy/MM/dd"、"yyyy/MM/dd HH:mm:ss"、"yyyy-MM-dd"、"yyyy-MM-ddTHH:mm:ss"、"yyyy-MM-ddTHH:mm:ss+HH:mm" 的格式

js 文件间的 import 和 export

bash
a
  ├── a1
  │   ├── a1.js
  │   ├── a1.wxml
  ├── a2
  │   ├── a2.js
  │   ├── a2.wxml
b
  ├── b1
  │   ├── b1.js
  │   ├── b1.wxml

a1.jsa2.js 是可以相互 importexport 的(按需引入),真机上也没问题

b1.js 如果 importa1.jsa2.js 的,本地开发没问题,真机会报错