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

前兩部分型豁,《如何用 React Native 創(chuàng)建一個iOS APP僵蛛?》尚蝌,《如何用 React Native 創(chuàng)建一個iOS APP (二)?》中充尉,我們分別講了用 React Native 來創(chuàng)建 Navigation Bar飘言,Tab Bar 等這些控件,今天在第三節(jié)驼侠,我們著重講一下剩下的一些控件姿鸿。閑話少敘,我們直入主題倒源!

添加一個ListView

React Native 有一個叫做 ListView 的組件苛预,可以顯示滾動的行數(shù)據(jù),基本上是 ios 項目上的一個術(shù)語表視圖笋熬。

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

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


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


然后添加以下功能:


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

當組件加載/安裝到用戶界面視圖時 componentDidMount() 便被調(diào)用周拐。當這個函數(shù)被調(diào)用時铡俐,我們可以從我們的數(shù)據(jù)對象中設(shè)置數(shù)據(jù)源屬性凰兑。

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


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


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

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

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

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

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


修改 destructuring 聲明。


添加以下程序:


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


修改 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 添加一個檢查系統(tǒng)导狡,如果它設(shè)置為 true约巷,我們就要返回被renderLoadingView() 視圖返回來的視圖。這將是一個視圖顯示一個活動指標(轉(zhuǎn)子)與文本“加載書籍…”旱捧。加載完成后独郎,你就會看到一個表中的書籍列表。


添加 Detail View

如果你點擊表中的一個細胞枚赡,細胞將突出顯示氓癌,但并不會有什么反應(yīng)。我們將添加一個可以顯示我們選擇這本書的詳細信息的細節(jié)視圖贫橙。

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


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

請注意我們在頂部邊距設(shè)定一個容器。如果你不這樣視圖將會從屏幕頂端開始幅垮,這很可能導(dǎo)致一些元素被導(dǎo)航欄隱藏腰池。

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


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


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


Searching

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

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




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

在render()方法中咆耿,我們檢查如果 isLoading 是真的,如果確實是創(chuàng)建一個活動指標爹橱,否則萨螺,我們就創(chuàng)建了一個空的觀點。以后將會用的到愧驱。

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

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

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



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

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

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



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

不定時更新中。

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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末暂衡,一起剝皮案震驚了整個濱河市询微,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌狂巢,老刑警劉巖撑毛,帶你破解...
    沈念sama閱讀 206,482評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異唧领,居然都是意外死亡藻雌,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,377評論 2 382
  • 文/潘曉璐 我一進店門斩个,熙熙樓的掌柜王于貴愁眉苦臉地迎上來胯杭,“玉大人,你說我怎么就攤上這事受啥∽龈觯” “怎么了鸽心?”我有些...
    開封第一講書人閱讀 152,762評論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀的道長居暖。 經(jīng)常有香客問我顽频,道長,這世上最難降的妖魔是什么太闺? 我笑而不...
    開封第一講書人閱讀 55,273評論 1 279
  • 正文 為了忘掉前任糯景,我火速辦了婚禮,結(jié)果婚禮上省骂,老公的妹妹穿的比我還像新娘莺奸。我一直安慰自己,他們只是感情好冀宴,可當我...
    茶點故事閱讀 64,289評論 5 373
  • 文/花漫 我一把揭開白布灭贷。 她就那樣靜靜地躺著,像睡著了一般略贮。 火紅的嫁衣襯著肌膚如雪甚疟。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,046評論 1 285
  • 那天逃延,我揣著相機與錄音览妖,去河邊找鬼。 笑死揽祥,一個胖子當著我的面吹牛讽膏,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播拄丰,決...
    沈念sama閱讀 38,351評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼府树,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了料按?” 一聲冷哼從身側(cè)響起奄侠,我...
    開封第一講書人閱讀 36,988評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎载矿,沒想到半個月后垄潮,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,476評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡闷盔,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,948評論 2 324
  • 正文 我和宋清朗相戀三年弯洗,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片逢勾。...
    茶點故事閱讀 38,064評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡牡整,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出敏沉,到底是詐尸還是另有隱情果正,我是刑警寧澤,帶...
    沈念sama閱讀 33,712評論 4 323
  • 正文 年R本政府宣布盟迟,位于F島的核電站秋泳,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏攒菠。R本人自食惡果不足惜迫皱,卻給世界環(huán)境...
    茶點故事閱讀 39,261評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望辖众。 院中可真熱鬧卓起,春花似錦、人聲如沸凹炸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,264評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽啤它。三九已至奕筐,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間变骡,已是汗流浹背离赫。 一陣腳步聲響...
    開封第一講書人閱讀 31,486評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留塌碌,地道東北人渊胸。 一個月前我還...
    沈念sama閱讀 45,511評論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像台妆,于是被迫代替她去往敵國和親翎猛。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 42,802評論 2 345

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