网络请求问题
- uni-app中发送网络请求,由于原生API request不支持配置拦截器,并且也不支持使用axios,所以需要使用
@escook/request-miniprogram
插件来封装请求拦截器分包问题
- 在项目根目录下创建分包的根目录
subpkg
- 在
pages.json
中和pages
节点平级的位置声明subPackages
节点,用来定义分包相关结构 - 之后在subpkg中新建需要分包的页面,创建时选择分包为
subpkg
,创建完成后,页面信息就会自动添加到subPackages
下的pages
目录下
"subPackages": [ |
uni.switchTab和uni.navigateTo
- 跳转到
tabBar
页面必须使用uni-switchBar
,并关闭其他所有非tabBar
页面。 uni.navigateTo
跳转到应用内的某个页面,但是不能跳转到tabBar
页面
切换一级菜单,滚动条的位置还在上个一级菜单滑动的位置
- 解决方法:
scroll-view
标签有个属性scroll-top
,可以设置滚动条的位置,所以我们可以设置一个属性,当切换一级菜单时,将该属性置为0,但是有个问题:scroll-top
如果没有变化,一直是0,那这样不会起效果,所以我们可以让该值在0和1之间切换,如果是0,就把它置为1,如果是1就置为0,虽然会有一像素的偏差,但是肉眼看不到页面跳转时携带的参数
- 页面跳转时携带的参数可以在跳转的页面的
onLoad
的生命周期中取到关于上拉触底刷新数据和下拉刷新
在
pages.json
中对想要设置的页面的style中添加onReachBottomDistance
属性,进行上拉触底的距离设置,添加enablePullDownRefresh
属性,进行下拉刷新设置在页面中上拉触底函数
onReachBottom
中进行操作在页面下拉刷新函数
onPullDownRefresh
中进行清除原有数据,并再次请求数据.注意:需要手动关闭下拉刷新,调用请求数据的函数时,传递一个函数作为参数,该函数为关闭下拉刷新的函数// 重新发送请求
this.getGoodsList(() => uni.stopPullDownRefresh())
//在getGoodsList中判断,如果有这个参数,就执行该函数
async getGoodsList(callback) {
...
callback && callback()
...
}问题记录
关于uni-num-box输入非法数字,就会显示NAN,所以在源码中将数字先转为number,如果是NAN,默认置为1
问题:使用滑动删除组件uin-swiper-action,会报错
TypeError: this.swipeaction.closeOther is not a function
解决方法:在uni-modules/uni-swipe-action/uni-swipe-action-item/mpwxs.js
的methods的closeSwipe
方法,修改为如下所示,添加了条件编译closeSwipe(e) {
if (!this.autoClose) return
// #ifdef H5
this.swipeaction.closeOther(this)
// #endif
},问题:使用官方接口
uni.chooseAddress
报错,报错信息:chooseAddress:fail the api need to be declared in the requiredPrivateInfos field in app.json/ext.json
解决方法:manifest.json 文件”mp-weixin” 节点 加一行配置"requiredPrivateInfos":["chooseAddress"]
。原因为使用地理位置相关的接口需要提前进行配置
登录
- 首先点击登录按钮,open-type属性选择getUserInfo,然后通过@getuserinfo中定义的回调获取用户信息.
<button type="primary" class="btn-login" open-type="getUserInfo" @getuserinfo="getUserInfo">一键登录</button> |
- 通过uni.login,获取code
- 通过第一步获取的信息和第二步获取的code封装参数,发送登录请求
- 登录成功后得到token,通过uni.setStoragesync存储在本地
- 在之后的支付请求时,需要在请求头中携带token