ReactNative遇到的坑,各種報錯,持續(xù)更新。。。

記錄下坑,以免再掉下去了哎。。。

  1. icon={require('image!yaodian')}
    tabbar調(diào)用圖片的時候,如果有新加入的圖片,需要重新編譯一下,這樣系統(tǒng)才能夠調(diào)用的到

  2. 寫分類的時候,記得在每個分類都寫代碼,不然Main調(diào)用不到分類的信息。

3.千萬記得大小寫正確,有時候一個駝峰的大寫沒寫出來,項目會改到瘋。

4.Xcode7寫的所有RN項目,在升級到Xcode8都會報錯,需要做以下修改。
1、RCTSRWebSocket.m


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

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

已試,可解決報錯問題。

5、RCTScrollView.m


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

打開RCTSCrollView.m Command+F 搜索@implementation RCTCustomScrollView只會搜索到一個結(jié)果,然后修改:
@implementation RCTCustomScrollView{ RCTRefreshControl *_refreshControl;}//不管原來有什么,在原來的基礎(chǔ)上加上這句}

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、 使用系統(tǒng)函數(shù),類似getDefaultProps、getInitialState之類的,return是用大括號。使用自定義的函數(shù),則用小括號()。
return(); 和 return{}的區(qū)別:前者是render方法里返回的界面,后者是返回一個對象

  1. 在調(diào)用cell.js的變量的時候,記得用=“”,而不是繼續(xù):‘’
    <MyCell leftIconName="draft" leftTitle="錢包" rightTitle="賬戶余額:¥100"/>

9.使用數(shù)組的時候,for遍歷記得添加 key={i}

renderBottomItem(){
  // 數(shù)組
  var itemArr = [];
  // 數(shù)據(jù)數(shù)組
  var data = [{'number':'100', 'title':'碼哥券'},{'number':'12', 'title':'評價'},{'number':'50', 'title':'收藏'}];
  // 遍歷創(chuàng)建組件裝入數(shù)組
  for(var i=0; i<data.length; i++){
    // 取出單獨的數(shù)據(jù)
    var item = data[i];
    
    itemArr.push(
                 <TouchableOpacity key={i}>
                 <View style={styles.bottomInnerViewStyle}>
                 <Text style={{color:'white'}}>{item.number}</Text>
                 <Text style={{color:'white'}}>{item.title}</Text>
                 </View>
                 </TouchableOpacity>
                 );
  }
  // 返回數(shù)組
  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) {

最終執(zhí)行npm start -- --reset-cache或者reload,解決問題。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容