React Native 填坑记

  • 公司转 React Native 开发,从开始接触到现在也一个多月了,给我的感觉,RN 的确非常叼,JSX、ES6,前端人员比较容易上手,但是现在还不能做到真正的一套代码适用 iOS 和 Android 两端。
  • 前端我是半路出家,RN 的 ES6 语法还不是很熟练,碰到 RN、Native 互相调用时,写的很难受,个人还是比较喜欢 Objective-C。
  • 现在 RN 也才到 0.38,如果出 1.0 的话,我还是很愿意花大时间学习学习的。在这里谈一谈我自己的看法,并将开发中遇到的一些问题记录下来。
优点:

1、写 UI 快,跟写 HTML 差不多,flex 布局写起来很爽,而且跨平台;
2、调试方便,command + R 直接刷新 Simulator,不用像 Xcode 等待编译;
3、体验好于 Hybrid App,接近 Native App;
4、热更新

缺点:

1、很多不支持,像支付、分享等还没有对应的 RN 方案,需要分别调用 iOS、Android;
2、iOS、Android 部分组件中还存在差异,坑需要慢慢探索;
3、Android 中开启调试模式卡到爆

1、 iOS 中正常,Android 中会自带一条下划线,需要加一句
underlineColorAndroid="transparent"
2、 需要设置高度,iOS 中不设置会自适应展示,Android 中不设置显示不全
3、lineHeight 在 Android 中不能设置为小数。要想一套代码适应 iOS 和 Android 的话,可以这样写:
flexDirection: 'row',
alignItems: 'center',
justifyContent: 'center',
4、zIndex 在 Android 中无效,后渲染的组件在上面。
5、没有 js 中的 show/hide 方法,需要根据属性判断是否渲染,比如:
{
    this.state.username && this.state.password ? (
        // 存在 username 和 password 时
        
            已登陆
        
    ) : (
        
            
                登陆
            
        
    )
}
6、 通过网络获取数据的 ListView 不能直接渲染,因为渲染时数据还没回来,RN 会因空数据报红
{
    this.state.data != null ? (
        
    ) : (
        null
    )
}
7、RN、OC 交互,callback 不能多于一个,否则 RN 会崩溃

上个项目涉及到定位,我在 OC 里写好定位方法,RN 中获取回调,有时突然崩溃,有时还没问题,当时卡了我一个下午 。后来想起 iOS 中定位有时会因失败定位第二次或者第三次,导致了出现第二个、第三个 callback,崩溃。

  • React Native 中文网
  • js.coach 第三方组件库

你可能感兴趣的:(React Native 填坑记)