1.小程序生命周期
| onload | 只加载一次 |
|---|---|
| onshow | 页面显示/切入前台时触发 |
| onready | 只加载一次,初次渲染完成时触发,代表页面已经可以和视图层交互 |
| onhide | 页面隐藏/切入后台时触发 |
| onunload | 卸小程序时调用,如redirectto/navigaBack去别的页面 |
2.兼容性问题安卓/苹果/编译器
2.1 时间格式
- 苹果不可用yyyy-DD-mm的格式,操作前先转成yyyy/DD/mm
2.2 图片引入
- 安卓不可用如ICON (5)的格式。 (未研究,但经排查是因为中间的空格)
3.真机调试问题
3.1 Toast和hideLoading,同时出现;Toast被吞了,一下闪过
- 原因:底层的Toast和hideLoading用的是同一方法,因此只能二选一。
- 方法:把Toast放置事件队列的最后一位,待wx.hideLoading结束后再显示出来。
setTimeout(() => {
Toast(res.msg)
}, 0);
4.工具方法集
4.1 整数位大号字/小数位小号字场景
<text style="font-size:76.27rpx">{{payAmount && tools.split(payAmount)[0]}}</text>
<text style="font-size:19px;" wx:if="{{payAmount &&tools.indexOf(payAmount,'.')>0}}">.</text>
<text>{{payAmount&& tools.split(payAmount)[1]}}元加购</text>
- 用split方法分割出小数点前后的数字,整数位小数位分别设字号,小数点通过中间那行wx:if方法控制显示隐藏
5.this.selectComponent方法注意点!
5.1 问题:使用selectComponent取到的组建为null?
排查顺序
- 1.是否给该组建加了选择器,如[dom里id='cpn'] 【JS中用selectComponent('#cpn')]才能取到
- 2.由于selectComponent本质是组件选择,若被选组件未被加载或者未加载完成,则selectComponent选不到;若组件用了wx:if则会待条件为true时才渲染,这就导致上述问题。
- 3.组件放置层级太深,就得看机器性能/加载速度了。
6.switch组件使用
-
switch UI效果图
-
踩坑记录
- 原生switch右侧有5px的margin
- 外部是有1px的border的
- 因为右侧是空虚的没有边界,若要让圆点有左右偏移,先再.wx-switch-input::after 中左margin;再在.wx-switch-input.wx-switch-input-checked:after 改transform偏移量。(上下偏移直接margin)
- 样式修改
.wx-switch-input {
width: 74rpx !important;
height: 48rpx !important;
margin-right: 0px !important;
}
/*白色样式(false的样式)*/
.wx-switch-input::before {
width: 74rpx !important;
height: 48rpx !important;
box-shadow: none !important;
background-color: #E9EBED !important;
}
/* 圆点样式 */
.wx-switch-input::after {
margin-left: 8rpx;
box-shadow: none !important;
width: 30rpx !important;
height: 30rpx !important;
margin-top: 8rpx;
}
/* 选中后的圆点 */
.wx-switch-input.wx-switch-input-checked:after {
transform: translateX(24rpx) !important;
}
7.CSS集合
- nth-child选择这个p元素的父元素的第二个为p的子元素
p:nth-child(2){
background:#ff0000;
}
8.解决小程序生产、开发环境接口切换问题
- 小程序官方API:__wxConfig.envVersion-> 1.develop=开发;2.trial=体验;3.release=生产。
let API_URL = "";
function baseUrl() {
const version = __wxConfig.envVersion; // 获取当前版本
switch (version) {
case 'develop':
API_URL = "https://xy.cozzia.com.cn/chair/api"; //开发版小程序
break;
case 'trial':
API_URL = "https://xy.cozzia.com.cn/chair/api"; //体验版小程序
break;
case 'release':
API_URL = "https://wxchart.cozzia.com.cn/chair/api"; //线上小程序
break;
default:
API_URL = "https://wxchart.cozzia.com.cn/chair/api"; //线上小程序
break;
}
return API_URL;
}
baseUrl()
9.进入场景值
- 路径:app.js-onShow的options.scene参数
- 注意:如扫码进入,后续每次调用onShow都是延续同样的场景值。
onShow(options) {
if (options.scene == 1011){
.....
}
},