react-native 開發(fā)中碰到的問題總結(jié)

前段時間接觸了一點(diǎn)RN的開發(fā)浩嫌,總結(jié)了以下的一些問題以及解決方法

  • AppRegistry.registerComponent('projectName', () => componentName); 一般只會用到一次, projectName 必須和文件夾名字一樣.

  • 在iOS上使用http鏈接的圖片地址可能不會顯示,解決方案:https://segmentfault.com/a/1190000002933776

  • 圖片如果使用網(wǎng)絡(luò)地址的話,source有固定的格式,資源屬性是一個對象,而且必須指定寬高

    <Image source={{'uri': 'https://xxxxx'}} style={{width:193, height: 110}} />
  • 引入本地圖片的一些注意點(diǎn)

    使用本地圖片,直接require
    require中的圖片名字必須是一個靜態(tài)字符串,不能是一個變量或者表達(dá)式
    與網(wǎng)絡(luò)圖片相比煤率,Packager可以得知圖片大小了,不需要在代碼里再聲明一遍尺寸
    如果有banana.ios.jpg和banana.android.jpg乏冀,Packager就會根據(jù)平臺而選擇不同的文件
    倍圖蝶糯,可以使用@2x,@3x這樣的文件名后綴辆沦,來為不同的屏幕精度提供圖片

    <Image source={require('./images/banana.jpg')} />
  • StyleSheet.create 用來定義組件的樣式
    <Text style={styles.red}>red text</Text>
    <Text style={styles.green}>green text</Text>

    const styles = StyleSheet.create({
        red: {
              fontSize: 40
        },
        green: {
             color: 'green'
        }
    })
    注意要使用駝峰寫法
  • 尺寸(寬度和高度):React Native中的尺寸都是無單位的昼捍,表示的是與設(shè)備像素密度無關(guān)的邏輯像素點(diǎn)。

    <View style={{width: 100, height: 100, backgroundColor: 'blue'}}></View>
    
  • flexbox (有個區(qū)別众辨,flexDirection的默認(rèn)方向是 column)

  • 處理文本輸入 組件:TextInput 事件: onChangeText

  • 背景圖的實現(xiàn)(通過嵌套來實現(xiàn)),不存在 backgroundImage

    <Image source={...}>
        <Text>Inside code</Text>
    </Image>
  • ios 圓角的不好處理 : 不要裸用Image標(biāo)簽端三,在外面套一層<View>,讓borderRadius作用在View標(biāo)簽

  • ScrollView 一個通用的可滾動的容器鹃彻,可以垂直也可以水平滾動(通過horizontal屬性來設(shè)置) --- 適合用來顯示數(shù)量不多的滾動元素

  • FlatList 用于顯示一個垂直的滾動列表郊闯,其中的元素之間結(jié)構(gòu)近似而僅數(shù)據(jù)不同,更適于長列表數(shù)據(jù),且元素個數(shù)可以增刪团赁,F(xiàn)latList并不立即渲染所有元素育拨,而是優(yōu)先渲染屏幕上可見的元素。FlatList組件必須的兩個屬性是data和renderItem欢摄。data是列表的數(shù)據(jù)源熬丧,而renderItem則從數(shù)據(jù)源中逐個解析數(shù)據(jù),然后返回一個設(shè)定好格式的組件來渲染怀挠。

  • 網(wǎng)絡(luò)請求 => Fetch 應(yīng)用中訪問任何網(wǎng)站不會出現(xiàn)跨域析蝴,還可以使用ES7的async/await , 或者使用其他第三方庫

     async getMoviesFromApi() {
        try {         // 注意這里的await語句绿淋,其所在的函數(shù)必須有async關(guān)鍵字聲明
            let response = await fetch('https://facebook.github.io/react-native/movies.json');            
            let responseJson = await response.json();
                return responseJson.movies;
            } catch(error) {
                console.error(error);
            }
      }
  • class xxx extends Component {} 這種方式必須this.eventName.bind(this)這種方法來正確的綁定this,或者方法直接寫成箭頭函數(shù)闷畸,就可以直接用 this.eventName 調(diào)用

  • 字符串new Date()會有問題,NaN吞滞,最好讓后端直接返回時間戳

  • 更改手機(jī)statusbar的顏色
    有時候需要做沉浸式的頭圖佑菩,這時候如果ios的statusbar內(nèi)容顏色為黑色時,則看不到statusbar了裁赠,這時候就需要設(shè)置一下

    import { StatusBar } from 'react-native'
    render() {
        StatusBar.setBarStyle('light-content', true);
    }
  • 處理證書異常殿漠,攔截ssl請求錯誤q
    @Override
    public void onReceivedSslError(WebView view,SslErrorHandler handler, SslError error) {
        // handler.proceed(); 接受證書
        super.onReceivedSslError(view, handler, error);
        mFail = true;
        showFail();
        String msg = "您訪問的頁面SSL證書異常";
        mLoadingView.statusToFail(msg);
    } 
  • RN與H5 postMessage 重復(fù)的問題,解決方案:

    const patchPostMessageJsCode = `(${String(function() {
      var originalPostMessage = window.postMessage
      var patchedPostMessage = function(message, targetOrigin, transfer) {
          originalPostMessage(message, targetOrigin, transfer)
      }
      patchedPostMessage.toString = function() {
          return String(Object.hasOwnProperty).replace('hasOwnProperty', 'postMessage')
      }
      window.postMessage = patchedPostMessage
    })})();`
    injectedJavaScript={patchPostMessageJsCode}
    
  • react-native run-android 報錯
    cd android/
    vim local.properties
    寫入以下內(nèi)容:
    sdk.dir = /Users/USERNAME/Library/Android/sdk
    or
    vim ~/.zshrc
    export ANDROID_HOME=/Users/guest/Library/Android/sdk
    本文首發(fā)于 : http://ghost.omeme.me/2017/07/22/react-native-kai-fa-zhong-peng-dao-de-wen-ti-zong-jie/

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末佩捞,一起剝皮案震驚了整個濱河市绞幌,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌失尖,老刑警劉巖啊奄,帶你破解...
    沈念sama閱讀 222,183評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異掀潮,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)琼富,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,850評論 3 399
  • 文/潘曉璐 我一進(jìn)店門仪吧,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人鞠眉,你說我怎么就攤上這事薯鼠。” “怎么了械蹋?”我有些...
    開封第一講書人閱讀 168,766評論 0 361
  • 文/不壞的土叔 我叫張陵出皇,是天一觀的道長。 經(jīng)常有香客問我哗戈,道長郊艘,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,854評論 1 299
  • 正文 為了忘掉前任,我火速辦了婚禮纱注,結(jié)果婚禮上畏浆,老公的妹妹穿的比我還像新娘。我一直安慰自己狞贱,他們只是感情好刻获,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,871評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著瞎嬉,像睡著了一般蝎毡。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上氧枣,一...
    開封第一講書人閱讀 52,457評論 1 311
  • 那天沐兵,我揣著相機(jī)與錄音,去河邊找鬼挑胸。 笑死痒筒,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的茬贵。 我是一名探鬼主播簿透,決...
    沈念sama閱讀 40,999評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼解藻!你這毒婦竟也來了老充?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,914評論 0 277
  • 序言:老撾萬榮一對情侶失蹤螟左,失蹤者是張志新(化名)和其女友劉穎啡浊,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體胶背,經(jīng)...
    沈念sama閱讀 46,465評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡巷嚣,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,543評論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了钳吟。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片廷粒。...
    茶點(diǎn)故事閱讀 40,675評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖红且,靈堂內(nèi)的尸體忽然破棺而出坝茎,到底是詐尸還是另有隱情,我是刑警寧澤暇番,帶...
    沈念sama閱讀 36,354評論 5 351
  • 正文 年R本政府宣布嗤放,位于F島的核電站,受9級特大地震影響壁酬,放射性物質(zhì)發(fā)生泄漏次酌。R本人自食惡果不足惜恨课,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,029評論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望和措。 院中可真熱鬧庄呈,春花似錦、人聲如沸派阱。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,514評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽贫母。三九已至文兑,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間腺劣,已是汗流浹背绿贞。 一陣腳步聲響...
    開封第一講書人閱讀 33,616評論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留橘原,地道東北人籍铁。 一個月前我還...
    沈念sama閱讀 49,091評論 3 378
  • 正文 我出身青樓,卻偏偏與公主長得像趾断,于是被迫代替她去往敵國和親拒名。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,685評論 2 360

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

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,304評論 25 707
  • React Native優(yōu)秀博客芋酌,以及優(yōu)秀的Github庫列表(很多英文資料源自于[awesome-react-n...
    董董董董董董董董董大笨蛋閱讀 10,650評論 4 162
  • 持續(xù)更新中...... 一套企業(yè)級的 UI 設(shè)計語言和 React 實現(xiàn)增显。 https://mobile.ant....
    日不落000閱讀 5,726評論 0 35
  • 突然想起要寫這篇文章,是因為今天早飯后在林蔭滿布的校道上漫步脐帝,邊走邊讀著村上春樹的隨筆集《村上朝日堂的卷土重來》同云。...
    柏小齊閱讀 1,400評論 3 22
  • 帶“四老上北京” 帶四個老人趕北京,讓四老六十多年來揚(yáng)眉吐氣了一把堵腹,完成了人生最大心愿炸站,唯一遺憾的是沒讓老...
    鴻雁相伴閱讀 403評論 3 6