如何避免微信小程序中app.js中onShow事件的n次出发问题
在开发中,遇到一个一个小难题,就是app.js中onShow事件会因调用其他API而触发,比如,wx.chooseImage、wx.makePhoneCall、wx.previewImage。
小程序热启动确实是一个坑,因为通过扫码或者分享进入也会热启动,一般开发者都只在onLaunch处理扫码进入的相关逻辑,热启动时就出bug了。
目前比较好的办法就是onShow中通过首个参数option时下的scene判断进入的场景,根据场景处理相关逻辑。
如果是转发的场景的话,可以把业务代码写在onLoad函数,因为分享后的事件不会执行onLoad,只会执行onShow。
简单描述下微信小程序的相关文件类型
- WXML:是框架设计的一套标签语言,结合基础组件、事件系统,可以构建出页面的结构。
- WXSS:是一套样式语言,用于描述WXML组件样式。
- js:处理逻辑,网络请求。
- json:小程序设置,如页面注册、页面标题及tarBar。
你是怎么封装微信小程序的数据请求的
- 将所有的接口放在js文件中并导出
- 在app.js中创建封装请求数据的方法
- 在子页面中调用封装的方法请求数据
有哪些参数传值的方法
- 给html元素添加data属性来传递我们需要的值,然后通过e.currentTarget.dataset或onload的param参数获取。但data名称不能有大写字母,不可以存放对象。
- 设置id的方法标识来传值通过e.currentTarget.id获取设置的id的值,然后通过设置全局对象的方式来传递数值。
- 在navigator中添加参数传值。
你使用过哪些方法来提高微信小程序的应用速度
- 提高页面加载速度
- 用户行为预测
- 减少默认data的大小
- 组件化方案
怎么解决小程序的异步请求问题
在回调函数中调用下一个组件的函数
app.js
success:function(info){
that.apitnCallback(info)
}
index.js
onLoad:function(){
app.apitnCallback = res=>{
console.log(res)
}
}
小程序的双向绑定和vue哪里不一样
小程序直接this.data的属性是不可以同步到视图的,必须调用:
this.setData({
noBind:true})
如何实现下拉刷新
首先在全局config中window配置enablePullDownRefresh
在Page中定义onPullDownRefresh
钩子函数,到达下拉刷新条件后,该钩子函数执行,发起请求方法,请求返回后,调用wx.stopPullDownRefresh
停止下拉刷新。
bindtap和catchtap的区别是什么
相同点
扫描二维码关注公众号,回复:
13300001 查看本文章
首先他们都是作为点击事件函数,就是点击时触发。在这个作用上他们是一样的,可以不做区分。
不同点
他们的不同点主要是bindtap是不会阻止冒泡事件的,catchtap是阻止冒泡的。
简述下wx.navigateTo()、wx.redirectTo()、wx.switchTab()、wx.navigateBack()、wx.reLaunch()的区别
- wx.navigateTo():保留当前页面,跳转到应用内的某个页面。但是不能跳转到tabbar页面。
- wx.redirectTo():关闭当前页面,跳转到应用内的某个页面。但是不能跳转到tabbar页面。
- wx.switchTab():跳转到abBar页面,并关闭其他所有非tabBar页面。
- wx.navigateBack():关闭当前页面,返回上一页或者多级页面。可通过
getCurrentPages()
获取当前的页面栈,决定需要返回几层。 - wx.reLaunch():关闭所有页面,打开到应用内的某个页面。