美文网首页
React Native 填坑记

React Native 填坑记

作者: 哎呀我Qu | 来源:发表于2017-01-30 14:25 被阅读813次
    • 公司转 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、<TextInput> iOS 中正常,Android 中会自带一条下划线,需要加一句
    underlineColorAndroid="transparent"
    
    2、<Text> 需要设置高度,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 时
            <View style={styles.login}>
                <Text style={styles.loginText}>已登陆</Text>
            </View>
        ) : (
            <TouchableOpacity style={styles.login} onPress={this._onPressLoginButton.bind(this)}>
                <View>
                    <Text style={styles.loginText}>登陆</Text>
                </View>
            </TouchableOpacity>
        )
    }
    
    6、<ListView> 通过网络获取数据的 ListView 不能直接渲染,因为渲染时数据还没回来,RN 会因空数据报红
    {
        this.state.data != null ? (
            <ListView style={styles.listView}
                dataSource={this.data} 
                renderRow={this.renderRow.bind(this)}/>
        ) : (
            null
        )
    }
    
    7、RN、OC 交互,callback 不能多于一个,否则 RN 会崩溃

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

    相关文章

      网友评论

          本文标题:React Native 填坑记

          本文链接:https://www.haomeiwen.com/subject/hhhhittx.html