如何用 React Native 創(chuàng)建一個(gè)iOS APP?(三)

前兩部分,《如何用 React Native 創(chuàng)建一個(gè)iOS APP?》,《如何用 React Native 創(chuàng)建一個(gè)iOS APP (二)?》中,我們分別講了用 React Native 來創(chuàng)建 Navigation Bar,Tab Bar 等這些控件,今天在第三節(jié),我們著重講一下剩下的一些控件。閑話少敘,我們直入主題!

添加一個(gè)ListView

React Native 有一個(gè)叫做 ListView 的組件,可以顯示滾動(dòng)的行數(shù)據(jù),基本上是 ios 項(xiàng)目上的一個(gè)術(shù)語表視圖。

首先,按照所顯示的修改解構(gòu)的聲明以包含多個(gè)組件,然后就可以使用。

添加以下風(fēng)格樣式表:


添加以下BookList類構(gòu)造函數(shù):


然后添加以下功能:


在構(gòu)造函數(shù)中,我們創(chuàng)建一個(gè)列表視圖。數(shù)據(jù)源對(duì)象,并將其分配給數(shù)據(jù)源屬性。列表視圖使用的數(shù)據(jù)源是一個(gè)接口,可以確定更新了的 UI 改變所在的行。我們提供一個(gè)函數(shù)來比較雙行的同一性,它可以用來決定數(shù)據(jù)列表的改變。

當(dāng)組件加載/安裝到用戶界面視圖時(shí) componentDidMount() 便被調(diào)用。當(dāng)這個(gè)函數(shù)被調(diào)用時(shí),我們可以從我們的數(shù)據(jù)對(duì)象中設(shè)置數(shù)據(jù)源屬性。

修改 render() 函數(shù)如下圖所示:


接下來添加以下書目類函數(shù):


以上創(chuàng)建了一個(gè)在 render() 中的列表視圖組件呈現(xiàn)。這是datasource 屬性設(shè)置為數(shù)據(jù)源的值,我們前面定義的函數(shù)renderBook() 呈現(xiàn) ListView 的行。

在 renderBook() 我們使用 TouchableHighlight 組件。這是一個(gè)包裝器進(jìn)行觀點(diǎn)正確的響應(yīng)觸摸。在低壓下,包裝視圖的透明度降低,使得襯底的顏色顯示變暗或視圖著色。如果你壓在一個(gè)列表視圖,你將看到突出的顏色,就像我們先前選擇一個(gè)表視圖單元格一樣。添加一個(gè)空視圖組件底部的行分隔符的樣式。這種視圖將只是一個(gè)灰色水平線,就像每一行之間的一個(gè)分區(qū)。

重新加載應(yīng)用程序,你應(yīng)該看到只有一個(gè)細(xì)胞的表視圖。

接下來把真實(shí)的數(shù)據(jù)加載到應(yīng)用程序。

從文件中刪除FAKE—BOOK—DATA變量,添加以下數(shù)據(jù)來代替它。這是我們從數(shù)據(jù)中加載的 URL。


修改 destructuring 聲明。


添加以下程序:


構(gòu)造函數(shù)修改如圖所示。我們將另一個(gè)屬性添加到組件的狀態(tài)對(duì)象。我們通過這個(gè)來判斷是否加載視圖。


修改 componetDidMount() 函數(shù)如圖所示,添加如下 fetchData() 函數(shù)。fetchData() 調(diào)用Googlebooks API 并且用從響應(yīng)得到的數(shù)據(jù)設(shè)置數(shù)據(jù)源屬性。它也把 isLoading 設(shè)置為 true。


按提示修改渲染()函數(shù),添加如下 renderLoading 函數(shù)。我們?yōu)閕sLoading 添加一個(gè)檢查系統(tǒng),如果它設(shè)置為 true,我們就要返回被renderLoadingView() 視圖返回來的視圖。這將是一個(gè)視圖顯示一個(gè)活動(dòng)指標(biāo)(轉(zhuǎn)子)與文本“加載書籍…”。加載完成后,你就會(huì)看到一個(gè)表中的書籍列表。


添加 Detail View

如果你點(diǎn)擊表中的一個(gè)細(xì)胞,細(xì)胞將突出顯示,但并不會(huì)有什么反應(yīng)。我們將添加一個(gè)可以顯示我們選擇這本書的詳細(xì)信息的細(xì)節(jié)視圖。

將文件添加到項(xiàng)目并命名為 BookDetail.js。把以下內(nèi)容粘貼到文件中。


我們將通過上面代碼中的大多數(shù)所以不用全部瀏覽。我們沒見過的是用道具的使用屬性來提取數(shù)據(jù)。我們將通過道具屬性設(shè)置傳遞數(shù)據(jù)到這個(gè)類。在上面,我們得到這個(gè)數(shù)據(jù)并用它來填充視圖。

請(qǐng)注意我們?cè)陧敳窟吘嘣O(shè)定一個(gè)容器。如果你不這樣視圖將會(huì)從屏幕頂端開始,這很可能導(dǎo)致一些元素被導(dǎo)航欄隱藏。

在 BookList.js 中添加以下程序:


修改渲染()函數(shù)中的 TouchableHightlight 書目類如下圖所示:


當(dāng)行被壓縮時(shí)上述指定一個(gè)可能被命名的回調(diào)函數(shù)。把以下函數(shù)粘貼到類函數(shù)。這將推動(dòng) BookDetail 視圖到導(dǎo)航堆棧,設(shè)置出現(xiàn)在導(dǎo)航欄中的標(biāo)題欄。它通過這本書的對(duì)象對(duì)應(yīng)于BookDetail類的特定行。


Searching

既然我們已經(jīng)完成了特色的主從復(fù)合結(jié)構(gòu)的視圖選項(xiàng)卡,我們將在搜索選項(xiàng)卡操作以允許用戶查詢 API 對(duì)書籍的選擇。

打開 SearchBooks.js 并做如圖修改。




在上面我們?cè)跇?gòu)造函數(shù)中設(shè)置一些屬性:bookAuthor,bookTitle,isLoading 和errorMessage 。很快我們將看到如何使用他們。

在render()方法中,我們檢查如果 isLoading 是真的,如果確實(shí)是創(chuàng)建一個(gè)活動(dòng)指標(biāo),否則,我們就創(chuàng)建了一個(gè)空的觀點(diǎn)。以后將會(huì)用的到。

然后我們創(chuàng)建一個(gè)用于插入查詢的搜索表單。Texinput 用于輸入。我們?yōu)槊總€(gè) Texinput 組件指定一個(gè)回調(diào)函數(shù)時(shí),當(dāng)用戶鍵入一些文本時(shí)將調(diào)用該組件的值。命名時(shí),回調(diào)函數(shù) bookTileinput() 和bookAuthorinput() 將設(shè)置 bookAuthor和bookTlie 的狀態(tài)屬性和用戶輸入數(shù)據(jù)。當(dāng)用戶按下搜索按鈕時(shí) searchBooks() 就被命名了。

注意 React Native 沒有一個(gè)按鈕組件。相反,我們使用TouchableHighlight 并把它補(bǔ)充在文本周圍,然后其造型就像是一個(gè)按鈕。搜索按鈕被按下時(shí),根據(jù)輸入的數(shù)據(jù)構(gòu)造一個(gè) URL。用戶可以通過搜索標(biāo)題或作者來檢索,或即通過標(biāo)題又通過作者來檢索。如果返回結(jié)果,SearchResults 將被推到導(dǎo)航堆棧否則將顯示一條錯(cuò)誤消息。我們還將通過 SearchResults 類響應(yīng)數(shù)據(jù)。

創(chuàng)建一個(gè)名為 SearchResults.js 文件并把以下程序粘貼進(jìn)去。



我們已經(jīng)在以上我們使用的代碼中瀏覽了很多,所以我不會(huì)陷入每一個(gè)細(xì)節(jié)。上面得到的數(shù)據(jù)通過道具屬性傳遞到類并創(chuàng)建一個(gè) ListView 視圖的數(shù)據(jù)填充。

API 中我們注意到一件事是,當(dāng)你通過作者檢索時(shí),一些結(jié)果不會(huì)記錄數(shù)據(jù)但數(shù)據(jù)在作者本身。這意味著對(duì)于一些行 book,volumelnfo,imageLinks 的描述會(huì)有未定義的值。因此我們要做一個(gè)檢查,表明一個(gè)空的圖像視圖沒有是否有圖像,如果不做檢查應(yīng)用程序在加載圖片時(shí)可能會(huì)本行奔潰。

我們使用之前創(chuàng)建的相同的 BookDetail 組件來顯示每本書的細(xì)節(jié)。我們應(yīng)該把上面的檢查缺失的數(shù)據(jù)打包并試圖加載 BookDetail 視圖與缺失的數(shù)據(jù)。打開 BookDetail.js,修改 render() 函數(shù)如圖所示。它用來檢查數(shù)據(jù)傳入是否有一個(gè)圖像和在檢查傳入數(shù)據(jù)之前的描繪填充視圖。如果我們?cè)噲D描繪一本沒有圖片和簡(jiǎn)介的書,各自的區(qū)域?qū)⑹强瞻滓黄D憧赡芟氚岩粋€(gè)錯(cuò)誤的信息強(qiáng)加給用戶,但當(dāng)它在這里時(shí)我們會(huì)不理會(huì)它。



上圖為2017年最新的視頻教程資料,搜索2352149755加我好友私聊我上傳視頻教程,有什么不懂的也可以來私聊問我。

不定時(shí)更新中。

如果你能明白這些視頻資料的好差,那么你也算是入行了,底層和中高層就是這一步之差。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,885評(píng)論 6 541
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 99,312評(píng)論 3 429
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 177,993評(píng)論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我,道長(zhǎng),這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,667評(píng)論 1 317
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 72,410評(píng)論 6 411
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,778評(píng)論 1 328
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,775評(píng)論 3 446
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,955評(píng)論 0 289
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,521評(píng)論 1 335
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 41,266評(píng)論 3 358
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 43,468評(píng)論 1 374
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,998評(píng)論 5 363
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,696評(píng)論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,095評(píng)論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,385評(píng)論 1 294
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 52,193評(píng)論 3 398
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 48,431評(píng)論 2 378

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