API篇

hideLoading

  • Taro.hideLoading 微信真机上会同时关闭 Taro.showToast

setState

  • 初始化 setState 最佳时机 componentDidMount,在 componentWillMountsetState 的回调中再次 setStateH5 模式下会失效。(小程序:正常,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
  • 不使用 ViewText 标签设置样式。(H5内不生效)
可给其加诸如.taro-view .taro-text 的className

开发限制

  • 目前发现支付宝内使用 lodash 会导致异常错误
  • taro使用mobx,支付宝小程序中用到props的地方要写constructor(props) {super(props)}
  • 苹果6, 6s,6sp对taro的request方法支持不友好,有时不执行

多端开发不同之处

  • 上传发布包
  1. 微信:以用户维度管理版本,切采用替换版本的形式,允许版本号随意变更。只要上一版本的体验版与当前提交版本的开发人员一致情况下,体验版自动切换为最新提交的版本。
  2. 支付宝:单纯以版本号叠加的形式维护,不允许版本号回退到当前版本号一下。每次提交,都需要在开发平台重新配置体验版
  • TextView 等标签样式
  1. 微信:允许标签直接样式
  2. 支付宝:不允许标签直接设置样式
  3. H5:不允许标签直接设置样式

ENV_TYPY

h5页面在其他环境里获取的到我ENV_TYPY都是WEB

Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐