taro 小程序转h5之后报错_taro开发遇到的坑
API篇hideLoadingTaro.hideLoading 微信真机上会同时关闭 Taro.showToast setState初始化 setState 最佳时机 componentDidMount,在 componentWillMount 的 setState 的回调中再次 setState 在 H5 模式下会失效。(小程序:正常,H5:异常)map在 state 挂载的值为空数组的情况下,
·
API篇
hideLoading
Taro.hideLoading微信真机上会同时关闭Taro.showToast
setState
- 初始化
setState最佳时机componentDidMount,在componentWillMount的setState的回调中再次setState在H5模式下会失效。(小程序:正常,H5:异常)
map
- 在
state挂载的值为空数组的情况下,异步赋值,导致节点异常。(H5:异常,小程序:正常)
map 外层总是用一层组件包裹
组件篇
Image
- 实际H5实现是有一层包装层
ScrollView
ScrollView容器内第一个元素,慎用margin-top撑高度。 会破坏原始定高,导致少量内容却有滚动条。(小程序:异常,H5:正常)- 在小程序中默认存在
position: relative;。(H5表现正常)
hidden异常
通过 state 数据控制显隐,不会生效。
解决方案:通过三目运算解决
图片资源
background引用本地资源(小程序:异常)
数据丢失
- 通过
map函数式视图 丢失key及导致onClick这类事件传参异常。(所有遍历后的传参均为最后一项数据)
临时解决方案,总是通过 bind 来处理这类传参问题。Issue:https://github.com/NervJS/taro/issues/4452
字体放大
使用 white-space:nowrap; 属性,字体超过 20px 将被放大。(小程序:异常)
解决方案:通过给容器定高。
判断条件
- 函数式组件,判断进入前置
return条件,如果返回的是有效节点,不会立即跳出函数。
注意事项
iconfont中的Unicode变量,请使用String.fromCodePoint处理
举例:->String.fromCodePoint(xe685)
- 不能使用 Array#map 之外的方法操作 JSX 数组
- 总是使用
className而不是class - 不使用
View、Text标签设置样式。(H5内不生效)
可给其加诸如.taro-view.taro-text的className
开发限制
- 目前发现支付宝内使用
lodash会导致异常错误 - taro使用mobx,支付宝小程序中用到props的地方要写constructor(props) {super(props)}
- 苹果6, 6s,6sp对taro的request方法支持不友好,有时不执行
多端开发不同之处
- 上传发布包
- 微信:以用户维度管理版本,切采用替换版本的形式,允许版本号随意变更。只要上一版本的体验版与当前提交版本的开发人员一致情况下,体验版自动切换为最新提交的版本。
- 支付宝:单纯以版本号叠加的形式维护,不允许版本号回退到当前版本号一下。每次提交,都需要在开发平台重新配置体验版
Text、View等标签样式
- 微信:允许标签直接样式
- 支付宝:不允许标签直接设置样式
- H5:不允许标签直接设置样式
ENV_TYPY
h5页面在其他环境里获取的到我ENV_TYPY都是WEB
更多推荐

所有评论(0)