『技術分享』—— 我的第一個 RN 項目-趣聞

前言

之前利用自己的業余時間入門了微信小程序,并寫了一個入門項目 我的第一個微信小程序-趣聞 ,整體效果和之前寫的 kotlin-android 版的 趣聞 模塊和功能上沒有什么區別。不得不說,相比較 Android ,小程序開發起來真的是很舒服,完善的 API和封裝全面的組件,安裝官方詳細的開發文檔,很快就可以開發出一款簡單便捷的應用。

我們都知道,微信小程序的開發運用的大部分是前端的知識,那 react-native 開發同樣如此,既然這樣就順帶學習一下 RN,也為后面的跨平臺開發做下鋪墊。其實 RN 從 15 年到現在發展的也是蠻成熟的,也有了自己完善的控件,活躍的社區也開源了很多美觀的組件、項目和 API,因此開發起來也是相當的順手,當然也避免不了很多的坑,后面會進行介紹。

項目預覽

IOS

IOS預覽.gif

Android:

Android預覽.gif

或者點我

整體功能跟之前小程序和 Android 項目的大差不差,主要包括四大模塊:新聞、段子、歷史上的今天和小愛同學(圖靈機器人)。后面會對每個模塊進行大致的介紹。

新聞模塊

news

功能: 查看多種類型的實時新聞,其中包括:頭條、社會、國內、國際、娛樂、體育、軍事、科技、財經和時尚。并支持點擊單個新聞查看新聞詳情。

段子模塊

joker

功能:查看最新的段子數據,支持下拉刷新和上拉加載更多查看往期的段子數據。

歷史上的今天模塊

today

功能:查看歷史上今天發生的事件,并支持點擊查看事件的詳情。

小愛模塊

Robot

功能:和機器人進行簡單的對話聊天。

項目知識點

這個項目屬于入門難度,所以我整個學習到開發差不多5天的時間。開發過程中會遇到一些難點或者坑,這里記錄下來,方便自己后面查看,或許也可以幫助到小伙伴。

一些稍微簡單的,比如配置環境,創建項目的我就不多說了,自己百度就可以直接查到,后文也會附上相關的鏈接。

開源組件

RN 原生也提供了很多的組件和接口 官網入口,社區也開源了很多開源組件,這里對那些無私奉獻的開發者表示感謝。

我這個項目不復雜,因此用到的框架并不多,后續如果我再添加新的功能可能就需要添加相對應的框架了。

下面是我用到的組件:

image-20180626160944141

reactreact-native 創建項目的時候就下載了。

native-base 比起原生的控件,樣式上好看很多,并且提過了其他的控件,比如 Card、 Head等。

react-native-swiper 有點類似 AndroidViewPager實現輪播效果。

react-navigation 官方推薦的跳轉,并且附帶了 tab 組件。

具體的使用我就不多做介紹了,進入具體的官網,都會有非常詳細的使用教程。

自定義組件

看上面的預覽圖,你會發現第一次請求網絡或者下拉刷新&上拉的時候,會出現一個 Loading 這個就是簡單的自定義組件,我接下來簡單介紹另一個自定義組件:當請求失敗,展示失敗頁面,并可以點擊重試按鈕進行重試。因為要把點擊重試的事件回調給使用者調用,涉及到 props 的概念,很有代表性,也很常用,所以就介紹他吧。

先看一下效果。

nerPreview

界面搭建: 這個不難。

定義自定義屬性:

    static propTypes = {
        retryClick: PropTypes.func.isRequired
    };

聲明屬性的類型,PropTypes.func 代表這個屬性是函數, isRequired 代表這個屬性必須添加

屬性調用: 在點擊重試時調用這個屬性,我這里是函數,所以直接執行該函數。

onPress={() => {
    if (this.props.retryClick != null) {
        this.props.retryClick()
    }
}}

自定義控件使用:

this.state.netErrorVisible ? (
    <NetworkFailureLayout retryClick={() => {
        this.getData()
    }}/>
) : null

這里通過 netErrorVisible 字段控制網絡請求是否成功。

布局

用到最多的就是 flex 布局,涉及到前端的知識不做介紹,本人也是前端小白。推薦學習鏈接。

Flex 基礎篇

Flex 實例篇

快速實現圓角+陰影效果

shadowColor: '#ccc',
shadowOffset: {width: 2, height: 2,},
shadowOpacity: 0.5,
shadowRadius: 10,
backgroundColor: Color.white,
borderWidth: 0,
borderRadius: 5,
borderColor: 'rgba(0,0,0,0.1)',
padding: Size.public_margin,
elevation: 3,
overflow: 'hidden',

調試

模擬器 cmd + M & 真機搖晃手機調起調試菜單。常用功能:

Reload 重新加載

Debug JS Remotely

調試應用,會打開本地 http://localhost:8081/debugger-ui 調試界面,最好使用 Chrome

Enable Live Reload 實時預覽,cmd + s 有文件變化便重新編譯。

Android 打包

首先在項目根目錄使用終端執行 react-native bundle --platform android --dev false --entry-file index.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/src/main/res/ 命令,會生成 index.android.bundle(這個文件很重要)和相關的資源文件到 android/app 的相關目錄下。

其次就是正常的 Android 打包流程了。這里貼出教程鏈接: Android 打包

總結

整體開發起來,從 環境配置-創建項目-學習相關知識-開發-運行-調試-打包這一套流程走下來,還是蠻順利的,可能因為項目比較簡單的原因吧,當然也遇到了不少的坑,這里做個總結。

學習來源

  1. 中文官網 (不用多少,很詳細,全面)
  2. 某寶買的視頻(有需要私聊)
  3. 鏈接網站(文末會貼)

數據來源

聚合數據 沒辦法,暫時沒有能力寫接口,每天每個接口有 500 次的請求限制。

采坑心得

  1. unable to connect with remote debugger Timeout while connecting to remote debugger
  • 檢查是否連接設備 & 有且僅有一臺設備
  • 手機調試模式是否打開
  • 調試服務是否打開
  • 將存在的 apk 卸載重新運行
  • 檢查端口是否被占用
  1. 使用 createStackNavigator 創建 bottomBar titleBar 白色

    createStackNavigator配置出添加 headerMode: 'none', 隱藏 titleBar,然后使用 native-base 中的 Head 創建 TitleBar。

  2. FlatList 列表使用 navigation 進行跳轉,navigation not defined

    FlatList屬于自定義組件,如果需要使用 navigation 跳轉,需要將 navigation 對象傳到每個 item。

  3. 運行失敗

    image.png

    經常會遇到這種錯誤,仔細排查日志詳情,一般是可以找到問題的。

    image.png

    這里是因為 Text 導了兩個包。

相關鏈接

項目已上傳至 GithubQnews_React_Native

中文官網

30 天學 RN

RN 學習指南

控件-awesome-react-native

控件-react-native-elements

控件-native-base

控件-Ant Design

Flex 基礎篇

Flex 實例篇

原文地址

本人也是小白,寫的也不是很全面,請見諒。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,238評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,430評論 3 415
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事?!?“怎么了?”我有些...
    開封第一講書人閱讀 176,134評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,893評論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,653評論 6 408
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,136評論 1 323
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,212評論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,372評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,888評論 1 334
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,738評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,939評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,482評論 5 359
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,179評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,588評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,829評論 1 283
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,610評論 3 391
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,916評論 2 372

推薦閱讀更多精彩內容