RN

初次尝试ReactNative 的坑

2017-11-27  本文已影响32人  Dannn_Y

今天首次尝试使用RN,真的是困难重重,一不小心就漂一片红,真是心力交瘁。

首先是跟着官网这一篇教程学习的https://facebook.github.io/react-native/docs/integration-with-existing-apps.html 在现有iOS项目中添加RN,项目中只是部分页面需要使用RN,而不是全部页面。

按照上面一步步来流程是没有什么问题,只是当你想把项目跑起来的时候,肯定会遇到问题,因为这篇文档上缺少了一些步奏,下面是我按照这个教程学习RN,遇到的一些问题和解决办法,如果你也遇到了相同的问题,希望能帮到你。

一、直接用Xcode打开ios项目run,报如下error

error : '_JSNoBytecodeFileFormatVersion", referenced from'

screenshot.png
 pod 'React', :path => '../node_modules/react-native', :subspecs => [
    'Core',
    'DevSupport', # Include this to enable In-App Devmenu if RN >= 0.43
    'RCTText',
    'RCTNetwork',
    'RCTWebSocket', # needed for debugging
    'BatchedBridge',  # needed as of (0.46)
    # Add any other subspecs you want to use in your project
  ]
  # Explicitly include Yoga if you are using RN >= 0.42.0
  pod 'yoga', :path => '../node_modules/react-native/ReactCommon/yoga'

看到这个podfile文件和官方文档上的不同了吗,对了多加了一条'BatchedBridge'就是因为没有引进这个文件才导致的报错,所以添加上这个文件重新pod install就可以了。

二、查看RN创建的RCTRootView页面,报错“Application RNHighScores has not been registered”

screenshot.png

并有下面的提示,小白做这个还是不太懂,明明是照着文档写的为什么错了呢,查看根目录下的index.js文件

AppRegistry.registerComponent('MyReactNativeApp', () => RNHighScores);

是注册RNHighScores的问题吗?搜了一些网上的回答,说是需要AppRegistry.registerComponent('项目名称', () => RNHighScores); 这里填写的项目名称需要和RCTRootView初始化时,填写的moduleName保持一致

RCTRootView *rootView = [[RCTRootView alloc] initWithBundleURL:jsCodeLocation
                                                      moduleName:@"项目名称"
                                               initialProperties:nil
                                                   launchOptions:launchOptions];

尝试着修改了下,能顺利的跑起来了,所以如果碰到这个问题试着都换成组件名称试试。

第一次尝试RN,坑果然是很多,不过这是技术的趋势,以后编写代码将会越来越简单.

上一篇 下一篇

猜你喜欢

热点阅读