Taro小程序开发问题清单

215 阅读2分钟

一、Taro小程序中使用moment库,在小程序中运行正常,但是编译成H5导致moment引入报错

问题描述:小程序编译成H5运行时,如果某个tsx文件使用了moment三方库,则会报错,报错问题如下图: image.png

原因分析:详见www.yerenwz.com/5262.html

解决方法:Taro项目中的config文件夹的dev.js文件中进行如下配置:

module.exports = {
  env: {
    NODE_ENV: '"development"',
  },
  defineConstants: {},
  isWatch: true,
  mini: {},
  h5: {
    devServer: {
      proxy: {   // 代理配置
        ...
      }
    },
    webpackChain(chain, webpack){
      chain.resolve.mainFields.clear();
      chain.merge({
        resolve: {
          mainFields: ['main:h5', 'browser', 'module', 'main', 'jsnext:main']
        }
      });
      return chain;
    }
  },
};

二、小程序中使用伪元素失效

问题描述:小程序中使用伪元素如:last-child、:first-child等失效; 解决方式:在写伪元素样式时包裹的容器中类型后面加上标签名,具体如下:

<view className={"viewContainer"}>
  <text>第一个</text>
  <text>第二个</text>
  <text>第三个</text>
  <text>第四个</text>
  <text>第五个</text>
</view>

// 样式文件
.viewConatiner{
  color: blue;
}
.viewContainer text:last-child{
  color: red;
}

三、小程序自定义tabbar会导致页面底部被tabbar遮挡

问题描述:使用自定义的tabbar时,会导致页面底部有一个部分内容被tabbar遮挡;

出现原因:自定义tabbar设置的层级较高,所以会导致界面地图的一部分内容被遮挡,如果降低层级的话,又会出现因层级不够导致tabbar无法显示。

解决方式:在小程序底部增加一个view标签,并且设置高度为tabbar的高度,宽度为100%,具体代码如下:

<view style={{width: "100%", height: "calc(60px + env(safe-area-inset-bottom) / 2)"}} />

其中高度中env(safe-area-inset-bootm)代表IOS手机底部黑线的距离。

四、小程序自定义tabbar的时候会出现两个tabbar重叠的情况

问题描述:使用自定义tabbar时会出现两个tabbar重叠的情况。

出现原因:是因为使用了和元素包裹的原因,按照官方推荐如果使用了这个两个标签会出现两个tabbar重叠的情况;

解决方式:将原有的cover-view和cover-image换成View和Image标签即可,但是需要注意tabbar层级问题。