总体来说,iOS上很好,Android 上挺多小问题,简单列几点,没什么条理。
优点: 1. 两个平台样式一致性不错,界面开发省力很多 2. 开发很快,特别是界面,live reload和hot reloading都很好,做像素级UI还原很方便也很快 3. 比 cordova/ionic 之类 hybrid 性能好、更容易整合原生界面 4. 本论坛提倡移民,硅谷用它的应该不少
缺点: 1. 长期稳定维护的组件偏少 2. 包管理和cordova相比太原始 3. Android平台性能不好,红米2以前开发时JS只能4-6帧,现在好很多。但是timer杀伤力很大,不能用长时间的timer,我有个界面2个timer,一个100ms,一个1分钟,界面就卡死了(大概能猜到为啥这么差了,实现上很大缺陷)。用了一个react-native-background-timer库先解决了,体验上还是不够好。 4. 需要做background fetch、推送content-available之类处理的,在JS层限制很多,只适合退到后台还没被杀死的情况,还是需要在native处理 5. Android 平台的 Activity 在 React Native 没有对应的东西,有人封装过但天然不能很好配合,在 iOS 上好点。但几个 Native 来实现的 Navigator 都慢慢停滞了。而用 React Native 这套东西来实现的,某些情况下性能差点,和原生体验也有差异,只能说勉强能接受,如果团队在UI和交互上有自己特点,也能掩盖一下。
总体来说: 1. 个人非常推荐使用,特别适合快速把创意变成产品,大部分时候足够用,少数时候需要自己想办法 2. 各种开源组件库实现一般,熟练点的话很多库用的难受就自己做一个,反而少了很多折腾,比如 https://github.com/kirankalyan5/react-native-segmented-control-tab 这个库,跨平台的 Segmented Control,代码写成屎了,不同的人贡献代码,越改越乱,样式BUG成堆,但是没有另外的库做这个。我自己今天花半小时按他的属性接口写了一个,就可以覆盖主要功能了。 3. React 比 Angular 这套易用多了,state 管理我从没遇到什么意外情况,我用 Ionic 搞了一下,Angular 差多了。 4. 有个库能让 react native 使用 cordova 的组件,我还没测试,如果能用应该多了不少资源,cordova 那种原生库正好兼容这种场景。
先写这么多杂的吧。
我有个项目,可能因为性能原因只能换成 react-native-navigator 或类似的,目前用 react-navigation,在红米2上面几乎无法忍受,上面的 timer是原因之一,之前点个 tab 要8-10秒切过来,换成 background-timer以后,大概半秒,感觉还是很不爽,原生的流畅太多。