react-native 踩坑記

來源:互聯網
上載者:User

標籤:line   dal   超出   shu   點擊   foreach   螢幕   擷取   全域   

最近在使用react-native的時候遇到了很多坑,這裡給大家分享下

一.樣式

react-native 雖然支援flex布局,但是所有的樣式均是css樣式的一個很小的集合,尤其是在安卓機下問題尤為凸顯:

1.View內部的元素千萬不要超出父級的範圍,iso上問題倒是不大,安卓上就什麼超出的都看不到了2.lineHeight 可以用,不過千萬不要寫成小數,否則安卓上會直接崩潰3.rn的樣式不存在繼承的情況,所以基本上每個節點都要寫style,真的是體力活4.如果Text的父級元素設定了背景顏色,那麼ios下Text的背景顏色也是父級的背景顏色,要麼自己寫個Text重設下樣式,要麼就遇到了再改5.react-native的字型大小是沒有設定單位的,所以會隨著系統設定的字型大小而變化,我也不知道這是不是坑,不過貌似有的app也沒有管這個二.異常

react-native 在發生js異常的時候,debug的時候會直接紅螢幕,但是再release的時候直接會崩潰退出,解決辦法

import ErrorUtils from "ErrorUtils" 
//這裡應該做個判斷,如果不是debug的才做這樣的異常全域處理ErrorUtils.setGlobalHandler((e)=>{
  //發生異常的處理方法,當然如果是打包好的話可能你找都找不到是哪段代碼出問題了  Alert.alert("異常",JSON.stringify(e))});
三.fetch

react-native雖然內建有fetch,不過在使用的時候發現了一個問題,如果需要擷取http的header頭的時候問題就來了,可能得到的是一些千奇百怪的樣式,這並不是react-native的錯,而是第三方的 whatwg-fetch 留下的坑,當然也有人再github上跟react-native反映過這個問題,不過得到的解決方案都很坑,唯有一個辦法,就是拷貝自己修改,修改如下:

1.注釋該注釋的
(function(self) {    ‘use strict‘;   //注釋這裡,不然總是用的是全域的fetch    // if (self.fetch) {    //     return    // }
2.修改該修改的
function parseHeaders(rawHeaders) {        var headers = new Headers()
     //把\t\n改成\t,因為一般header都是用\n來分割的 rawHeaders.split(‘\n‘).forEach(function(line) { //rawHeaders.split(‘\t\n‘).forEach(function(line) { var parts = line.split(‘:‘) var key = parts.shift().trim() if (key) { var value = parts.join(‘:‘).trim() headers.append(key, value) } }) } return headers }
3.直接import你改好的檔案,fetch就可以用了四.Modal

Mode控制項在使用的時候要注意了,因為這個是rn提供的,並且也寫的很清楚是最高層級的一個彈出層,所以你想要又開啟Model又要跳轉基本是無望的了,所以建議不要使用這個,最好是使用第三方的控制項,我們用的是 react-native-modalbox + 高階控制項 實現的全遮蓋的彈出層

五.點擊螢幕其他位置關閉的菜單

這類菜單有個共同的特點就是點擊螢幕其他地方然後菜單就關閉,我們的解決辦法就是用自己寫的 react-native-modalbox + 高階控制項 也就是說放在一個彈出層裡面,當然可以試試把當前頁面套進一個大的 TouchableWithoutFeedback 裡面

暫時就想到了這些,等我好好總結下再寫添加吧

react-native 踩坑記

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.