React Native 基礎(chǔ)(一)

上篇就做了個(gè)初始化斩郎,這次來(lái)點(diǎn)實(shí)際的脑融。

寫(xiě)RN我建議用webstorm,很強(qiáng)大的一款I(lǐng)DE孽拷。打開(kāi)我們的項(xiàng)目:

簡(jiǎn)單看一下項(xiàng)目結(jié)構(gòu):

__test__: ?jest單元測(cè)試吨掌,表示沒(méi)耍過(guò)。

android: 安卓項(xiàng)目文件

ios: iOS項(xiàng)目文件

node_module: 依賴(lài)庫(kù)

余下的是一些配置文件以及項(xiàng)目入口文件 index.xxx.js。我們上篇之中運(yùn)行的代碼其實(shí)就是index.ios.js中的代碼膜宋。

說(shuō)到代碼窿侈,不得不說(shuō)一下RN的語(yǔ)法了,RN顧名思義就是用React寫(xiě)Native App秋茫,React使用jsx編寫(xiě)史简,就是js+xml,沒(méi)什么特別高端的地方肛著。這里我們大部分使用ES6的語(yǔ)法來(lái)寫(xiě)js圆兵。

1、組件

一開(kāi)始就開(kāi)始說(shuō)組件不知道會(huì)不會(huì)太快枢贿,組件是什么殉农?我個(gè)人理解就是一個(gè)可重復(fù)使用的模塊,Don‘t repeat yourself局荚,不要寫(xiě)重復(fù)的代碼超凳。

react中的組件稱(chēng)之為Component,這是react提供的一個(gè)基類(lèi)耀态,我們寫(xiě)的所有組件其實(shí)都是繼承自Component轮傍。

我新建了一個(gè)Treasures的項(xiàng)目,react生成的index.xxx.js中就寫(xiě)了一個(gè)與項(xiàng)目同名的組件Treasures首装,這個(gè)組件是作為app 入口組件创夜,文件底部寫(xiě)了注冊(cè)app接口:

AppRegistry.registerComponent('Treasures', () => Treasures);

2、組件的生命周期

constructor: 構(gòu)造器仙逻,這里最主要的功能就是初始化組件的state驰吓。

componentWillMount: 渲染之前,做數(shù)據(jù)請(qǐng)求即處理嘍桨醋,以便后面渲染出來(lái)棚瘟。

render: 渲染(必須),沒(méi)什么可說(shuō)的喜最,別忘了return。

componentDidMount: 渲染完成后庄蹋,這個(gè)再React Web端是非常用的瞬内,可以用jquery處理組件,但是再RN中限书,可能就是一下小處理了虫蝶。

componentWillUnmount: 移除組件前,移除組件的時(shí)候有時(shí)也需要處理一些東西吧哈哈倦西。

簡(jiǎn)單的開(kāi)發(fā)主要用到上面這幾種能真,還有其余的生命周期函數(shù)我們用的的時(shí)候再說(shuō)。

3、props & state

props和state可謂是react里的精髓了粉铐,通過(guò)props在組件之間傳遞數(shù)據(jù)疼约,通過(guò)state動(dòng)態(tài)改變組件。什么意思呢蝙泼?先說(shuō)props程剥,我們寫(xiě)一個(gè)組件比如說(shuō)一個(gè)Button,組件名叫MyButton

<TouchableHighlight style={{backgroundColor: '#FFFFFF'}}>

? ? ? ?<Text>我是Button</Text>

</TouchableHighlight>

我在別的地方調(diào)用這個(gè)<MyButton />就會(huì)出現(xiàn)一個(gè)黑色的按鈕汤踏。但如果我想要白色的按鈕呢织鲸?這TM就尷尬了。溪胶。搂擦。所以我們需要把color作為props,這樣別的地方就可以通過(guò)給這個(gè)props值來(lái)生成不一樣顏色的MyButton哗脖。如下:

<TouchableHighlight style={{backgroundColor: this.props.color}}>

? ? ? ? <Text>我是Button</Text>

</TouchableHighlight>

這個(gè)時(shí)候我們需要這樣調(diào)用:

<MyButton color={'#000000'} />

這樣就可以想要什么顏色就有什么顏色的button了瀑踢,Nice!

再說(shuō)一下state吧懒熙,我們又一個(gè)選數(shù)量的組件丘损,就像這樣:

我點(diǎn)減號(hào)中間的數(shù)字減1,點(diǎn)加號(hào)加1工扎。這個(gè)組件很常用徘钥,我希望把它寫(xiě)成一個(gè)組件,怎么寫(xiě)呢:

... <Text> {this.state.num} </Text> ...

左右按鈕就不寫(xiě)出來(lái)了肢娘,分別是點(diǎn)擊之行plus和minus函數(shù)呈础,我們看一下plus函數(shù)怎么寫(xiě):

plus(){

? ? ? ? this.setState({

? ? ? ? ? ? ? ? num: this.state.num + 1

? ? ? ? })

}

這里要注意的是state必須通過(guò)setState來(lái)改變,這里面牽扯到React內(nèi)部的機(jī)制橱健。這樣就實(shí)現(xiàn)了我們所需要的而钞,并且在點(diǎn)擊的時(shí)候只刷新了中間的數(shù)字。這就是典型MVVM設(shè)計(jì)思想拘荡,不得不佩服臼节。

講到這其實(shí)React中的組件不管是在Web還是Native都是一樣的。差別就是Web端可能是用<div>這樣的標(biāo)簽珊皿,我們也可以理解為組件网缝,RN中是用View組件。


這一部分就說(shuō)到這吧蟋定,順便說(shuō)說(shuō)這個(gè)組件的思想粉臊。我們?cè)赗eact中所有展現(xiàn)出來(lái)的都是基于Component,大到一整個(gè)頁(yè)面驶兜,小到一個(gè)按鈕扼仲。一個(gè)組件就是一種標(biāo)簽,如何細(xì)分組件就是一門(mén)藝術(shù)了哈哈哈哈哈屠凶。下次我們?cè)僬f(shuō)點(diǎn)別的喲西驰后!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末阅畴,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子贱枣,更是在濱河造成了極大的恐慌,老刑警劉巖纽哥,帶你破解...
    沈念sama閱讀 219,427評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異春塌,居然都是意外死亡晓避,警方通過(guò)查閱死者的電腦和手機(jī)只壳,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,551評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)吼句,“玉大人锅必,你說(shuō)我怎么就攤上這事√柩蓿” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,747評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵远搪,是天一觀的道長(zhǎng)劣纲。 經(jīng)常有香客問(wèn)我谁鳍,道長(zhǎng),這世上最難降的妖魔是什么倘潜? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,939評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上恨憎,老公的妹妹穿的比我還像新娘郊楣。我一直安慰自己,他們只是感情好净蚤,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,955評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布输硝。 她就那樣靜靜地躺著,像睡著了一般点把。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上郎逃,一...
    開(kāi)封第一講書(shū)人閱讀 51,737評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音贮懈,去河邊找鬼优训。 笑死,一個(gè)胖子當(dāng)著我的面吹牛揣非,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播妆兑,決...
    沈念sama閱讀 40,448評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼搁嗓!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起腺逛,我...
    開(kāi)封第一講書(shū)人閱讀 39,352評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎棍矛,沒(méi)想到半個(gè)月后安疗,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體够委,經(jīng)...
    沈念sama閱讀 45,834評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡茁帽,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,992評(píng)論 3 338
  • 正文 我和宋清朗相戀三年屈嗤,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了吊输。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,133評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡茫船,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出扭屁,到底是詐尸還是另有隱情,我是刑警寧澤疯搅,帶...
    沈念sama閱讀 35,815評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站罪治,受9級(jí)特大地震影響礁蔗,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜浴井,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,477評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望磺浙。 院中可真熱鬧,春花似錦撕氧、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,022評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)府怯。三九已至,卻和暖如春牺丙,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背赘被。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,147評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留民假,地道東北人龙优。 一個(gè)月前我還...
    沈念sama閱讀 48,398評(píng)論 3 373
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像野舶,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子平道,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,077評(píng)論 2 355

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