从0到1开发小程序也有一段时间了,小程序开发相较h5开发或者web网页开发起来确实方便很多,但前提是你要理解mvvm框架模式,了解生命周期等等,下面就总结一下我项目中遇到的一些坑以及自己是如何解决的
1.返回上一级页面的时候如何得到已经修改过的数据
问题:
一般我们会把一开始就要渲染的数据写在onLoad里面,大部分时候这个都是没问题的,但是当我修改了一开始要渲染的数据的时候,然后跳转到了下个页面,然后又从下个页面返回到当前页面,那么就会遇到当前本来修改好了的数据竟然还是原来的数据,因为onLoad之后会触发一次,返回上一级的数据,页面也并没有重新请求onLoad里面的数据,所以就造成了数据并没有发生改变
解决办法:
把一开始就要渲染的数据写在生命周期onshow里面。onshow里面的数据不论你是重新返回到当前页面还是从后天切换到前台,都会重新运行一次,这样就可以请求最新的数据
2.微信小程序 在canvas画布上划动,如何阻止页面上下动
问题:
之前使用使用canvas写了一个滑动解锁的,在安卓手机上都是好好的,但是到了苹果手机里,用户滑动的时候页面也会被拖动,很多人也遇到过,是canvas的滑动在苹果手机有兼容性问题导致的
解决办法:
a.在canvas上设置disable-scroll属性,禁止canvas进行上下滑动,并且还要设置一个触摸事件才能生效
<canvas disable-scroll="true"></canvas>
b.在当前页面的page页面中设置
"disableScroll":true
3.小程序中进行数组去重
经常会碰到的情况,当我们发送请求删除数据之后,服务器接口数据是变了,但是页面上的数据并没改变,只有再重新请求一次接口才会改变,但是每次删除数据都重新请求一遍是接口是很不合理的,还得重新渲染数据,一般我们都会手动使用slice删除,这样会遇到的一个问题就是数据的确删除了,但是当我们上拉加载更多的时候,数据的序号就会出现重复的,这个时候只能前端进行手动去重
4.小程序中的websocket及时通讯
1.建立连接
wx.connectSocket({
url: 'wss://net.guanggu.com:8080'
});
2.查看连接是否打开
wx.onSocketOpen(function(res) {
console.log('连接已经打开');
});
3.发送消息
wx.sendSocketMessage({
data:msg
})
4.获取传回来的消息
wx.onSocketMessage(function(res){
console.log('收到服务器内容:'+ res.data)
})
5.设置手机软键盘中的字 confirm-type
当你输入完毕,手机软键盘右下方的文字一般都是换行而不是发送,但是有时候项目需求是点击软件盘中自带的确定按钮来发送文字,而不是我们自己写的按钮,这时候就可以使用小程序的input中的confirm-type
<input placeholder="请输入..." confirm-type="send">
注意:这个属性只有input有,但input是无法实现文字换行的,而textarea可以实现文字换行,却无法修改软件盘中的文字,鱼和熊掌不可兼得,因此需酌情考虑,
6.滑动组件scroll-view向右滑动不生效
解决办法:
1.scroll-view最外层一定要包一层标签veiw
2.最外层的标签要设置属性 over-flower:hidden white-space: nowrap;
3.scroll-view要设置width 为100% scroll-x
网友评论