[微信小程序]开发中遇到的一些“坑”

1,791 阅读3分钟

最近公司开始做一些小程序项目,总结了小程序开发中遇到的一些坑,小程序新手,欢迎指点。


  1. css里不可是使用background做背景图,在手机上不显示;

  2. 如果页面有超过四次的跳转,不可以使用 wx.navigateTo()方法,可以使用wx.redirectTo(),在需要跳转的标签写上open-type=“redirect”

  3. 如果有页面底部有小程序自带的tab切换,页面上也有点击事件可以与之跳到同一个页面,不可以使用 wx.navigateTo(),需要用wx.switchTab跳转。

  4. 下拉刷新:在需要的页面的 json 中添加{"enablePullDownRefresh":true}该行代码,同时在页面刷新完成后添加:

wx.hideNavigationBarLoading() //完成停止加载
wx.stopPullDownRefresh() //停止下拉刷新,防止在安卓手机下拉后不回到顶端
  1. 尽量不要传" "和"0"等值到后台,小程序会默认为 null 或 undefined ;
  2. 弹出层,如果超过六个字,不可以用微信自带的方法,要用:
//在页面任意地方添加
<view class="ad_popError" wx:if="{{popErrorMsg}}">{{popErrorMsg}}</view> 
//在app.css中添加
.ad_popError{ 
background: #000; 
color: #fff; 
height: 58rpx; 
line-height: 58rpx; 
font-size: 24rpx; 
text-align: center; 
position: absolute; 
left: 10%; 
top: 50%; 
width: 80%; 
border-radius:5px;
z-index:3; 
margin-top:-29rpx;
opacity: 0.6;
}

//在js中添加方法:
ohShitfadeOut() {
var fadeOutTimeout = setTimeout(() => {
this.setData({ popErrorMsg: '' });
clearTimeout(fadeOutTimeout);
}, 2000);
},

//在需要弹出的地方添加:
that.setData(
{ popErrorMsg: "提示语" }
);
that.ohShitfadeOut();
return;

  1. 如果有需要进入页面就刷新的地方,接口路径要写在 onshow 里,不需要刷新的页面写在 onload 里,否则每次都重新加载会又慢又卡, 但是也不要把所有的接口都写在 onshow 里会浪费流量。
  2. 跳转页面在 url 上带参数大小写问题:例如:标签上的 data-headerImg=‘{{item.header}}’,在 js 中,headerImg 被默认为 headerimg,不识别大写字母。
  3. 如果用微信自带的扫一扫功能跳转到小程序的指定页面,小程序规定只能添加50个路径。
  4. 截取后台返回数据等,只能在 js 中进行操作,不能在 html 中截取。
  5. 后台返回list数据往页面中赋值是,不可以用for循环进行赋值,需要用小程序的方法在html中写wx:for="{{items}}",如果在for循环中用setData进行赋值,页面上显示的是都是最后一条数据的值。
  6. 图片路径的反斜杠自动转成正斜杠。
  7. css中font-weight:lighter,在 ios 中识别,(更细) 在 android 上不识别(正常)
  8. 动态倒计时要写在onload里。
  9. 微信本身的 Bug 引发的兼容性问题有个现成的例子,就是 wx.request() 返回的状态码 res.statusCode 的值在 iOS 下是 int 型数据,而在 Android 6.0.1 上却是 String 型数据。更规范的方法是使用parseInt(res.statusCode) === 200 来实现。
  10. 微信昵称是中文时,有时需要转码,encodeURIComponent()
  11. 如果小程序只有开调式可以调取数据,这时要考虑代码里的域名和设置域名是否一样。