ReactNative遇到的坑,各种报错,持续更新。。。

记录下坑,以免再掉下去了哎。。。

  1. icon={require('image!yaodian')}
    tabbar调用图片的时候,如果有新加入的图片,需要重新编译一下,这样系统才能够调用的到

  2. 写分类的时候,记得在每个分类都写代码,不然Main调用不到分类的信息。

3.千万记得大小写正确,有时候一个驼峰的大写没写出来,项目会改到疯。

4.Xcode7写的所有RN项目,在升级到Xcode8都会报错,需要做以下修改。
1、RCTSRWebSocket.m


ReactNative遇到的坑,各种报错,持续更新。。。_第1张图片

屏幕快照 2016-09-29 下午3.44.04.png

改成:
(void)SecRandomCopyBytes(kSecRandomDefault, keyBytes.length, keyBytes.mutableBytes);

已试,可解决报错问题。

5、RCTScrollView.m


ReactNative遇到的坑,各种报错,持续更新。。。_第2张图片

屏幕快照 2016-09-29 下午3.53.34.png

打开RCTSCrollView.m Command+F 搜索@implementation RCTCustomScrollView只会搜索到一个结果,然后修改:
@implementation RCTCustomScrollView{ RCTRefreshControl *_refreshControl;}//不管原来有什么,在原来的基础上加上这句}

6、
[_bridge.imageLoader loadImageWithURLRequest:imageRequest size:CGSizeMake(100, 100) scale:1 clipped:。。。。这句话报错
解决:

[_bridge.imageLoader loadImageWithURLRequest:imageRequest
                                                size:CGSizeMake(100, 100)
                                               scale:1
                                             clipped:FALSE
                                          resizeMode:RCTResizeModeStretch
                                       progressBlock:nil
                                     completionBlock:^(NSError *error, UIImage *image) {
            [self shareToWeixinWithData:aData thumbImage:image scene:aScene callBack:aCallBack];
        }];

7、 使用系统函数,类似getDefaultProps、getInitialState之类的,return是用大括号。使用自定义的函数,则用小括号()。
return(); 和 return{}的区别:前者是render方法里返回的界面,后者是返回一个对象

  1. 在调用cell.js的变量的时候,记得用=“”,而不是继续:‘’

9.使用数组的时候,for遍历记得添加 key={i}

renderBottomItem(){
  // 数组
  var itemArr = [];
  // 数据数组
  var data = [{'number':'100', 'title':'码哥券'},{'number':'12', 'title':'评价'},{'number':'50', 'title':'收藏'}];
  // 遍历创建组件装入数组
  for(var i=0; i
                 
                 {item.number}
                 {item.title}
                 
                 
                 );
  }
  // 返回数组
  return itemArr;
}

10.报错:
SyntaxError:Strict mode does not allow function declaration in a lexically nested statement.

解决:
打开
.\node_modules\react-native\Libraries\Core\InitializeCore.js 112行。
将function handleError(e, isFatal)替换成var handleError = function(e, isFatal) {

最终执行npm start -- --reset-cache或者reload,解决问题。

你可能感兴趣的:(ReactNative遇到的坑,各种报错,持续更新。。。)