坑(包括taro和原生小程序)
- onShareAppMessage,分享参数设置。
此api需要放在分享按钮父容器内,本次尝试用高阶组件,参考
components/shareContent
和修饰器模式,参考utils/wishShare
封装都不好用,只能放在父容器,导致代码冗余 - this指向问题,当多层嵌套的时候,taro解析后,this会出现指向性错乱
- taro没有兼容微信小程序内所有api.
例如
wx.requestSubscribeMessage
-
video 视频标签,当全屏播放的时候,安卓机全局弹窗不好使,需要把自定义弹窗放在video闭合标签内部
<Video id='myVideo'> <View className="dialog"></View> // 自定义dialog </Video>
-
scrollView标签需要设置固定高度,才能执行下拉事件
解决方案:重新计算scrollView高度
// 计算 scroll-view 的高度 computeScrollViewHeight() { let _this = this // let query = Taro.createSelectorQuery().in(this) // query.select('.scrollview').boundingClientRect(function (res) { //得到标题的高度 // let titleHeight = res.height //scroll-view的高度 = 屏幕高度- tab高(50) - 10 - 10 - titleHeight //获取屏幕可用高度 let screenHeight = Taro.getSystemInfoSync().windowHeight //计算 scroll-view 的高度 // let scrollHeight = screenHeight _this.setState({ scrollHeight: screenHeight }) // }).exec() }
- 在组件嵌套的时候,不同的写法,渲染情况不同,可能会出现子组件不渲染的问题
建议:
直接使用props,挂载到jsx上面
使用hooks写法,子组件监听props,更新处理
class写法,需要在componentWillReceiveProps做更新处理
-
小程序原生button标签上,不支持解构写法
例如
<Button {...props}><Button>
- 不支持
React.forwardRef
写法可以用hook写法,或者是
ref={(node) => this.modal = node}
获取子组件实例 -
音频。小程序内,1.6.0版本开始,该组件不再维护。建议使用能力更强的 wx.createInnerAudioContext 接口
taro,使用createInnerAudioContext,点击播放的时候,第二次才会好用
解决方案:// 第一次不播放兼容 function onPlay() { AudioContext.play() // if (!playFirst) return var timer = setTimeout(function () { console.log('第一次播放') // playFirst = false clearTimeout(timer) AudioContext.play() }, 200) }
- 视频加载,安卓机加载缓慢,定位到问题是:视频本身有问题
解决方案:产品重新对视频进行转码,就可以使用了
总结
流畅有余,兼容不足。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。