uniapp+uview开发企业微信应用的问题及解决记录

目录

一、已解决问题

1、uview的Tabs 标签做顶部导航,样式错误

2、列表滚动到底部,下拉刷新报错

3、uniapp动态获取元素高度不能使用ref

4、uniapp的在scroll-x模式下,ios显示异常

5、列表页含有子组件时,点击子组件的卡片进入操作页,【提交】表单后返回上一页,不重新请求并渲染数据

二、暂未解决问题,先做记录

1、u-Picker 选择器,选择某项

2、uview的BackTop返回顶部组件,一旦有数据则不显示;在子组件中也不显示


一、已解决问题

1、uview的Tabs 标签做顶部导航,样式错误

数据仅为2条(4条以下)时,标签整体居左,且滑块显示偏左(下图)

 解决:

方法1:加一点偏移量

// 这个位置是自定义的class,我放在了整个页面中,顶部导航下的内容区是子组件已给了动态的固定高度
.status_bar {
  height: var(--status-bar-height);
  width: 100%;
}
 //这个位置距离要计算,基本差不多就行,暂时没翻车
::v-deep .u-tabs__wrapper__nav__line {
  left: 40rpx;
}

 方法2:最近发现在组件的felx布局基础上设置样式竟然生效了,还是直接定位到中间修改更好些(以前不生效才使用的方法1)

<u-sticky bgColor="#fff">
      <u-tabs
        :list="List"
      >
</u-tabs>

// css部分
// 将宽度拉到和屏幕一样长
.content .u-sticky {
  width: 100%;
}
// 给每个标签块赋为等宽(50%以前用过不好用,这次更新方法也没试)
::v-deep .u-tabs__wrapper__nav__item {
  flex: 1;
}

 

2、列表滚动到底部,下拉刷新报错

[Intervention] Ignored attempt to cancel a touchmove event with cancelable=false

出现原因:下拉刷新和列表内容滚动冲突。

解决思路:使用scroll-view自带的下拉刷新,不使用uniapp的api。

3、uniapp动态获取元素高度不能使用ref

说uniapp支持vue写法,但是并不支持ref获取dom,要是用uniapp的api。如下:

需绑定id使用uni.createSelectorQuery()
示例:
uniapp给子组件动态高度
 // 计算内容区高度 - 名字 - 完了日期 - unicard组件自带的上下padding
    // const query = uni.createSelectorQuery().in(this);
    // let tempNameH = ''
    // let tempTimeH = ''
    // query.select('#name_id').boundingClientRect(data => {
    //   tempNameH = data.height
    // }).exec();
    // query.select('#time_id').boundingClientRect(data => {
    //   tempTimeH = data.height
    // }).exec();
    // this.contentClass.height = (Math.round(this.cardViewHeight.slice(0, this.cardViewHeight.indexOf('p'))) - tempNameH - tempTimeH - 28) + 'px'
    // // %行高后  取值1 / 0
    // let tempNum = (this.cardViewHeight.slice(0, this.cardViewHeight.indexOf('p')) - tempNameH - tempTimeH - 28) % 25 > 20 ? 1 : 0
    // this.contentClass['-webkit-line-clamp'] = Math.floor((this.cardViewHeight.slice(0, this.cardViewHeight.indexOf('p')) - tempNameH - tempTimeH - 28) / 25) + tempNum

4、uniapp的<scroll-view/>在scroll-x模式下,ios显示异常

问题:

scrollview嵌套scrollview,ios的子组件居中/居中偏下显示,安卓、pc浏览器不会。(如图)

解决方案:

更换为view基础标签,用css-flex去写。避免scrollview嵌套scrollview,因为可能还有出现其他问题……

修改后目前:ios、安卓、鸿蒙,企业微信内正常,如果将链接粘贴至企业外部浏览器,safari、安卓qq浏览器正常。

5、列表页含有子组件时,点击子组件的卡片进入操作页,【提交】表单后返回上一页,不重新请求并渲染数据

解决思路:

uniapp开发需注意页面的生命周期和组件的生命周期。

因uniapp子组件中无法调用onShow,只能写vue2的生命周期,从详情页返回列表页时,列表页的子组件内不再刷新。

可以在列表页父组件onShow生命周期(uniapp页面最早的能够刷新的周期)中调用子组件的方法,写法同vue2。

二、暂未解决问题,先做记录

1、u-Picker 选择器,选择某项

点击【确定】,再打开时,默认为上次选中项;

点击【取消】、【关闭】后,再打开时,默认为上次选择某项的内容,而不是“点击确定”后的内容的回显,需要在进行【取消】、【关闭】的操作时进行重新赋值defaultIndex默认值,才能实现。但实际上,此时defaultIndex在【确定】时已经赋值,不生效。

2、uview的BackTop返回顶部组件,一旦有数据则不显示;在子组件中也不显示

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值