记录一下在开发小程序的时候遇到的问题,笔记跟坑我都稍微写一点ios
实在记不住( = = ||),可是用到的概率挺高,因此就索性抄下来了web
直接截图了json
咱们知道小程序更改data里面字段值的话,要这样canvas
this.setData({ name: '小程序' })
这种状况比较常见,可是若是是对象的话,要用中括号括起来小程序
this.setData({ ['info.isLike']: true });
还有一个状况,若是是要修改数组里面某个项的值数组
let targetIndex = 0; this.setData({ ['messages['+ targetIndex +'].isLoad']:false })
原生的顶部导航栏功能太少,好比没有我的头像,没有回到主页等等。因此不少时候都会要求本身写一个微信
步骤一:app.json文件写上这句话
加了这句话自带的导航栏就会消失网络
"window": { "navigationStyle": "custom" //加上这句话 }
步骤二:本身写一个组件,高度的话能够参考这样app
wx.getSystemInfo({ success: (res) => { let device = res.platform; let statusBarH = res.statusBarHeight; // 自定义导航栏高度,ios设置40px,安卓端48px if (device === 'ios') { this.globalData.navbarHeight = statusBarH + 40; } else { this.globalData.navbarHeight = statusBarH + 48; } // 手机状态栏高度 this.globalData.statusbarHeight = statusBarH; // 手机系统 this.globalData.deviceSystem = device; } });
步骤三:每个页面要padding-top高度去适配这个导航栏组件echarts
<view class='order-refund_details' style='padding-top:{{navbarHeight}}px'>
跟顶部的缘由同样,不少功能没法知足,要自定义,这里提一个点,使用自定义以后,切换页面的时候会有明显的抖动
为了解决这个问题,咱们把一级页面所有变成了组件,用组件切换来代替页面切换,大概是这样
<view style='flex:1;height:calc(100% - {{showVersionTip?50:0}}rpx)'> <CardInfo visible="{{ current === 'card' }}"></CardInfo> <Mine visible="{{ current === 'mine' }}"></Mine> </view>
版本有更新的话,用户必定会看到弹窗,必定要点一下肯定按钮
global数据若是中途值改变了,页面或者组件里面的data里面初始化的那个值不会改变的,因此要额外处理
data: { vipCode: app.global.vipCode // vip版本 }, ready() { // 有时候app全局值改变了,data里面的值没有同步 this.setData({ vipCode: app.global.vipCode }); },
写聊天页面的时候,为了解决输入框要顶上,可是聊天列表不顶上的问题。
<textarea bindfocus="fixedPosition"/> page.js //输入框聚焦时 fixedPosition(event){ //加个延时器保险一下 setTimeout(() => { this.setData({ fixedScrollTop: event.detail.height? event.detail.height: 0, //整个页面的高度往上顶软键盘的高度 scrollTop: this.data.messages.length * 1000 //聊天列表滚动到最低 }); }); },
<view class="qwui-auth_container" catchtouchmove="ture">
配置了也没用,不生效,会报错,可是不影响使用
使用web-view跳转到时候遇到一个问题,这个页面能够分享,分享出去的url路径带了中文,在微信端跳转的时候没问题,可是在企业微信跳转就死活打不开,后来排查问题是中文没有转码
onShareAppMessage() { return { path: `${this.route}?pathUrl=${encodeURIComponent(this.data.url)}&userId=${wx.getStorageSync('userId')}` }; }
好比setData这个,企业微信里面若是某些操做要紧跟setData以后,请务必放在setData的回调里面,当时快坑死了,其余像路由跳转,setStorageSync和getStorageSync也要注意
this.setData({ xxx: xxx },() => { //请务必写在这里 xxxx });
保险起见,微信跟企业微信都加吧
已解决,使用cover-view先遮住,防止用户点击,当加载完成再把它隐藏,不能不隐藏,由于cover-view存在时没法拖动
这玩意也算摸过一次,还行,接口写法也比较简单,不难,目前就发现一个缺点,慢慢慢(不过我以为是由于我用的是免费版的缘由,哈哈)
在云函数里面console是没用的,看不到输出,只能靠瞎猜