React-Native-Android使用總結

jopen 9年前發布 | 58K 次閱讀 Android開發 移動開發 React-Native-Android

最近嘗試使用react-native android為我們的一個創業項目寫了一個demo,項目放在 github 了,有興趣的朋友可以看看,下面給出一些效果:

關于height

很多時候,這都是一個不折不扣的大坑,比方說當你Image加載一個網絡圖片時,如果你不給該Image設置width和height,那你將什么都看不到。這還不算,當你使用ListView時如果該組件同時存在一個兄弟元素,那么此時ListView必須設置height,否則你會發現它不再響應用戶的滾動操作。。。

關于Fetch

當你試圖提交附件表單數據的時候,請一定要使用FormData對象將數據包裹,這應該算不上什么太古怪的事兒~

如果你只是普通的json提交,就按照官方例子來做:

fetch(API_LOGIN_URL, {
    method: 'POST',
    headers: {
      'Accept': 'application/json',
      'Content-Type': 'application/json',
    },
    body: JSON.stringify({
      account: this.state.account,
      password: this.state.password,
    })
  })
.....

不然fetch會報錯說你使用了不支持的body屬性值類型~

如果你和我一樣需要實現類似用戶頭像修改的功能,你可能需要下面兩個類庫:

react-native-image-picker :用于頭像圖片獲取

react-native-fileupload :用于圖片文件表單上傳,這是由于你使用image-picker獲取到的圖片只是本地url,你需要這個uploader來組裝成原始的file上傳表單~~

順便說一下,第三方依賴更新較快,代碼也可能有bug,各種bug,所以你最好主動的去github上和項目的維護人員溝通,一起想辦法解決問題~~

關于async/await

至少在我目前的環境(默認安裝react-native0.16.0自帶的babel)是沒有默認開啟該特性的,不過貌似是可以手動開啟的,有興趣可以看 這里

關于第三方類庫

個人感覺,目前很多關注度高的第三方庫還是值得信賴的,不過面向android平臺的庫功能還不足夠強大,這可能由于fb剛開源不久的緣故,但是關注度高的庫的作者響應也一般都很快,這一點很值得贊許~

但是,老實講,如果你要開發的app包含大量特殊的業務,或者效果,這個時候你就只能自己去實現FB暫時沒有提供的原生控件了,這就要求你同時要熟悉android原生開發,目前這個階段,我覺得你是無法避免這種尷尬局面的。

響應屏幕尺寸的變化

FB提供了Dimensions組件可以用來獲取屏幕的當前尺寸:

var deviceHeight = Dimensions.get('window').height;
var deviceWidth = Dimensions.get('window').width;

不過,由于設備可能旋轉,所以如果你的app支持設備旋轉的話,你就需要找到一種方法來實時獲取當前設備尺寸,官方推薦的方法是每次render都要調用這個方法來刷新設備尺寸, 而目前我還沒有解決,主要是不知道應該如何獲取屏幕旋轉事件~~

style小知識

當你打算在某個控件上套用設置好的某個樣式,但需要單獨為其設置一個額外特殊值時,你可以這樣:

<View style={[styles.demo, {backgroundColor: "blue"}]}></View>

我也不懂,為何用數組類型的,但就是能這么寫喲~

布局

布局和web比起來其實不算復雜,但你務必要掌握Flex布局,強烈推薦看 這里

TextInput

這里主要說的是鍵盤問題,當用戶點擊這個控件后,系統會彈出鍵盤,這個鍵盤會占據屏幕控件的,所以,你可以將整個表單View放在ScollView中!這樣用戶就可以在屏幕上進行滾動了,但注意,滾動的是整個表單View,而不是滾動的TextInput內容(當你設置為支持多行輸入時),最后還有就是別忘了給ScollView添加keyboardDismissMode屬性,如下:

</div>

該屬性會在滾動觸發后自動關閉鍵盤~~

至于怎么滾動TextInput內部數據,目前沒找到方法。

默認android系統的TextInput會有一個丑陋的下邊框,style是無法去掉它的,不過你可以使用underlineColorAndroid屬性將其設置為與背景色一樣,來達到隱藏效果,這個時候你在外部包一個View來定義樣式即可~~

原文 http://blog.kazaff.me/2015/12/21/React-Native-Android小結/

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!