一、常用組件匯總
1.1、View, 基礎(chǔ)視圖組件,相當(dāng)于iOS的UIView和Android的Activity。
1.2、圖片顯示組件
- Image,圖片
- ImageBackground,背景圖片
1.3、事件響應(yīng)組件
- TouchableOpacity/TouchableHighlight,后者支持設(shè)置高亮顏色。
- Button,按鈕組件,樣式固定,只支持簡單屬性配置。定制化的需求使用
TouchableOpacity來擴(kuò)展支持。
1.4、文本相關(guān)
- Text,文本顯示組件;
- TextInput,文本輸入組件
1.5、滾動(dòng)和列表
- ScrollView,滾動(dòng)視圖組件,相當(dāng)于iOS的UIScrollView。
- FlatList/SectionList/VirtualizedList,列表,支持惰性渲染子元素。
相當(dāng)于iOS中的UITableView,其中VirtualizedList是FlatList/SectionList的底層實(shí)現(xiàn),SectionList是支持分組的列表。
1.6、Modal,一種簡單的覆蓋在其他視圖之上顯示內(nèi)容的方式。
類似于iOS的模態(tài)視圖的概念,可以用來實(shí)現(xiàn),例如Toast、loading框、彈窗等等。
1.7、其他
- ActivityIndicator,圓形的 loading 提示符號組件
- RefreshControl,下拉上拉組件
- Switch,on/off的開關(guān)組件
- StatusBar,狀態(tài)欄組件
- KeyboardAvoidingView,主要用來解決:手機(jī)上彈出的鍵盤常常會(huì)擋住當(dāng)前的視圖。本組件可以自動(dòng)根據(jù)鍵盤的高度,調(diào)整自身的 height 或底部的 padding,以避免被遮擋。
二、第三方組件庫
三、頁面的跳轉(zhuǎn)
React Navigation 包含三種模式,分別是StackNavigator棧導(dǎo)航、TabNavigator標(biāo)簽導(dǎo)航、DrawerNavigator抽屜導(dǎo)航(從側(cè)邊欄劃出抽屜一樣的效果),這基本覆蓋現(xiàn)有移動(dòng)端的交互場景。
最早選擇使用ReactRouter,現(xiàn)在基本上用 React Navigation 替代,做為頁面跳轉(zhuǎn)首選。
四、網(wǎng)絡(luò)編程
RN框架提供 Fetch 來實(shí)現(xiàn)網(wǎng)絡(luò)連接。
五、本地?cái)?shù)據(jù)持久化
-
AsyncStorage
以鍵值對的形式進(jìn)行存儲(chǔ)數(shù)據(jù)。
在 iOS 上,AsyncStorage在原生端的實(shí)現(xiàn)是把較小值存放在序列化的字典中,而把較大值寫入單獨(dú)的文件。在 Android 上,AsyncStorage會(huì)嘗試使用RocksDB,或退而選擇 SQLite。
數(shù)據(jù)庫
- react-native-sqlite-storage
- realm 宣稱自己是最快的 react-native 數(shù)據(jù)庫。
不是ORM(對象關(guān)系映射數(shù)據(jù)庫),也不是建立在sqlite之上。
React Native數(shù)據(jù)本地存儲(chǔ)-Realm
六、開源項(xiàng)目學(xué)習(xí)
常用開學(xué)庫
-
框架Redux,有對應(yīng)的ReactNative-Redux
Redux 的設(shè)計(jì)思想很簡單,就兩句話。
(1)Web 應(yīng)用是一個(gè)狀態(tài)機(jī),視圖與狀態(tài)是一一對應(yīng)的(State-SinglePage)。
(2)所有的狀態(tài),保存在一個(gè)對象里面(即Store,全局唯一)。