React Native從最基礎(chǔ)學(xué)起

博客地址:www.lixuzong.com

這篇文章主要講的的內(nèi)容是沒(méi)有JavaScript基礎(chǔ)的情況下開(kāi)發(fā)React Native應(yīng)用需要知道的基礎(chǔ)知識(shí)耸棒。也是我在學(xué)習(xí)React Native框架的一個(gè)學(xué)習(xí)曲線(xiàn)。以方便記錄下來(lái)方便查閱,一方面希望可以幫助到和我一樣的菜鳥(niǎo)減少學(xué)習(xí)時(shí)間。

璇子作

基礎(chǔ)語(yǔ)法

var和let的區(qū)別

var聲明的變量是無(wú)視作用域的汉匙,而let是在作用域里有效的碉熄。

這里需要和swift中的var和let區(qū)分籽懦,var是是可以改變的值,而let是不可以改變的值漓滔,與作用域無(wú)關(guān)编饺。

匿名函數(shù)的寫(xiě)法

與swift語(yǔ)法一樣,函數(shù)也是對(duì)象類(lèi)型次和,也可作為函數(shù)的返回值來(lái)只用反肋,但是匿名函數(shù)的寫(xiě)法有所不同那伐。

function addFunc() {
    return (valueA, valueB) => {
        return valueA +valueB;
        }
    }
console.log(addFunc()(1.2)); //輸出3

==與===的區(qū)別

與其他語(yǔ)法不同點(diǎn)是==比較左右的值踏施,只要值相等,結(jié)果就是true罕邀。而===不僅比較值畅形,也比較類(lèi)型,只有兩者相等才返回true诉探。

‘!=’是值不相等日熬,‘!==’是值和類(lèi)型都不相等

類(lèi)與對(duì)象

  • this 關(guān)鍵字表示類(lèi)對(duì)象本身肾胯,如果在類(lèi)內(nèi)使用函數(shù)之類(lèi)通過(guò)this來(lái)調(diào)用

  • 類(lèi)的構(gòu)造函數(shù)constructor(valueA,valueB)創(chuàng)建類(lèi)的使用調(diào)用

  • 可以通過(guò)staticClass.obj兩種方式創(chuàng)建靜態(tài)變量

  • 類(lèi)中定義的函數(shù)可以省略關(guān)鍵字function

  • 通過(guò)this.obj來(lái)創(chuàng)建字段竖席,可以在類(lèi)的構(gòu)造函數(shù)里面創(chuàng)建也可以在函數(shù)外創(chuàng)建,如果是未創(chuàng)建的字段其值為undefined

  • 字段的只讀和只寫(xiě)屬性通過(guò)getset關(guān)鍵字來(lái)聲明敬肚,這里可以跟objective-C的方法類(lèi)比毕荐。

  • 類(lèi)的繼承使用extend關(guān)鍵字,在子類(lèi)里調(diào)用super就可以調(diào)用父類(lèi)的函數(shù)艳馒。

  • 對(duì)象使用new來(lái)生成憎亚,還有一種情況是直接生成匿名類(lèi)對(duì)象,用鍵值對(duì)的形式創(chuàng)建對(duì)象弄慰。

    let obj = {
        name: 'obj',
        value: 'lalala',
      sayHello: function(name) {
          console.log('Hello, ' + name);
      },
      sayHi: (name) => {
          console.log('Hi! ' + name);
      }
    };
    

文件的導(dǎo)入和導(dǎo)出

首先說(shuō)一下相對(duì)路徑第美,使用 . 就是在當(dāng)前路徑查找,如果是..就是從上層路徑查找陆爽,沒(méi)有 . 或者 / 開(kāi)頭的就是從項(xiàng)目根目錄開(kāi)始查找什往。

導(dǎo)出

導(dǎo)出的時(shí)候需要使用export關(guān)鍵字,可以到出變量、類(lèi)慌闭、函數(shù)恶守,可以定義默認(rèn)導(dǎo)出內(nèi)容,需要加上export default關(guān)鍵字

導(dǎo)入

導(dǎo)入文件使用關(guān)鍵字import,from格式是 import [something] from ‘相對(duì)路徑’ 贡必。如果是沒(méi)有使用默認(rèn)導(dǎo)出的情況下可以根據(jù)需要接收需要的屬性兔港,一般是全部接收,如果有默認(rèn)導(dǎo)出的話(huà)可以直接接收默認(rèn)導(dǎo)出仔拟,并且默認(rèn)導(dǎo)出是唯一的衫樊!

// data.js
export var value = 1;
export const name = 'lala';
export default age = 12;

// index.js
// 如果只需要 value 和 name
import {value, name} from './data.js';
console.log(value);

// 如果想將所有由 export 導(dǎo)出的都引入
import * as data from './data.js';
console.log(data.value);

// 默認(rèn)導(dǎo)入可以任意取名
import anyName from './data.js'
console.log(anyName);   

組件的生命周期

liftCycle

在整個(gè)ReactJS的生命周期中,主要經(jīng)歷4個(gè)階段:創(chuàng)建階段、實(shí)例化階段科侈、更新階段和銷(xiāo)毀階段载佳。

創(chuàng)建階段

這個(gè)階段會(huì)調(diào)用getDefaultProps方法,并返回一個(gè)對(duì)象緩存下來(lái)臀栈,然后與父組件制定的props對(duì)象合并蔫慧,最后賦值給this.props作為默認(rèn)屬性。

props是一個(gè)對(duì)象权薯,是組件用來(lái)接收外面參數(shù)的姑躲,不支持在內(nèi)部修改自己的props屬性,只能通過(guò)父組件來(lái)賦值。getDefaultProps方法是用來(lái)設(shè)置默認(rèn)值得盟蚣。

實(shí)例化階段

該階段是在實(shí)例化組件類(lèi)的時(shí)候黍析,也就是該組件類(lèi)被調(diào)用的時(shí)候。

React.render (
    <List name = "ReactJS"></List>
    document.getElementById("container")
);

我們初始化了一個(gè)List組件屎开,這個(gè)時(shí)候看一下依次調(diào)用的生命周期方法阐枣。

  1. getInitialState 初始化組件的state值,其值會(huì)被賦值給this.state屬性奄抽。
  2. componentWillMount 組件即將被加載到視圖上的時(shí)候調(diào)用蔼两,根據(jù)業(yè)務(wù)對(duì)state進(jìn)行相應(yīng)的操作
  3. render 根據(jù)state的值,生成頁(yè)面需要的虛擬DOM結(jié)構(gòu)逞度,并返回該結(jié)構(gòu)额划。
  4. componentDidMount 對(duì)根據(jù)虛擬DOM結(jié)構(gòu)而生成的真是DOM進(jìn)行相應(yīng)的處理。為了保證不出現(xiàn)UI上的錯(cuò)誤第晰,在這個(gè)函數(shù)里面發(fā)起請(qǐng)求接收網(wǎng)絡(luò)數(shù)據(jù)锁孟。這個(gè)時(shí)候改變this.state屬性就會(huì)出發(fā)ReactJS內(nèi)部的監(jiān)聽(tīng)事件,再次調(diào)用getInitialState函數(shù)茁瘦,這樣的話(huà)再次刷新界面品抽。

更新階段

這主要發(fā)生在用戶(hù)操作之后或者父組件有更新的時(shí)候,此時(shí)會(huì)根據(jù)用戶(hù)的操作進(jìn)行相應(yīng)的調(diào)整甜熔。

  1. componentWillReceiveProps(object nextProps) 當(dāng)組件接收到新的props時(shí)圆恤,會(huì)觸發(fā)該函數(shù)。在該函數(shù)中通城幌。可以調(diào)用this.state完成對(duì)state的修改盆昙。
  2. shouldComponentUpdate(nextProps nextState) 該方法會(huì)攔截新的propsstate,然后根據(jù)事先判定好的判斷邏輯焊虏,做出最后要不要更新組件的決定淡喜。
  3. componentWillUpdate(object nextProps, object nextState) 當(dāng)方法2返回的是true的時(shí)候這里就做一些更新前的操作。
  4. render 根據(jù)一系列的diff算法诵闭,生成需要更新的虛擬DOM數(shù)據(jù)炼团。最好在這里進(jìn)行數(shù)據(jù)和模板的整合澎嚣,不進(jìn)行state的操作。
  5. componentDidUpdate 該方法在組件更新已經(jīng)同步到DOM中后出發(fā)瘟芝,我們通常在該方法中做一些DOM操作易桃。

銷(xiāo)毀階段

componentWillUnmount 當(dāng)組件從DOM中移除的時(shí)候調(diào)用這個(gè)方法,通常會(huì)在這個(gè)方法中做一些取消事件綁定锌俱,銷(xiāo)毀定時(shí)器等工作晤郑。

就相當(dāng)于iOS中的dealloc函數(shù)。

參考文章鏈接

http://blog.csdn.net/yuanguozhengjust/article/details/50470171
https://lzxhahaha.gitbooks.io/react-native-getting-start/content/index.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末贸宏,一起剝皮案震驚了整個(gè)濱河市造寝,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌锚赤,老刑警劉巖匹舞,帶你破解...
    沈念sama閱讀 206,602評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件褐鸥,死亡現(xiàn)場(chǎng)離奇詭異线脚,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)叫榕,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,442評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén)浑侥,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人晰绎,你說(shuō)我怎么就攤上這事寓落。” “怎么了荞下?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,878評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵伶选,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我尖昏,道長(zhǎng)仰税,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,306評(píng)論 1 279
  • 正文 為了忘掉前任抽诉,我火速辦了婚禮陨簇,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘迹淌。我一直安慰自己河绽,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,330評(píng)論 5 373
  • 文/花漫 我一把揭開(kāi)白布唉窃。 她就那樣靜靜地躺著耙饰,像睡著了一般。 火紅的嫁衣襯著肌膚如雪纹份。 梳的紋絲不亂的頭發(fā)上苟跪,一...
    開(kāi)封第一講書(shū)人閱讀 49,071評(píng)論 1 285
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼削咆。 笑死牍疏,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的拨齐。 我是一名探鬼主播鳞陨,決...
    沈念sama閱讀 38,382評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼瞻惋!你這毒婦竟也來(lái)了厦滤?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,006評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤歼狼,失蹤者是張志新(化名)和其女友劉穎掏导,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體羽峰,經(jīng)...
    沈念sama閱讀 43,512評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡趟咆,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,965評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了梅屉。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片值纱。...
    茶點(diǎn)故事閱讀 38,094評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖坯汤,靈堂內(nèi)的尸體忽然破棺而出虐唠,到底是詐尸還是另有隱情,我是刑警寧澤惰聂,帶...
    沈念sama閱讀 33,732評(píng)論 4 323
  • 正文 年R本政府宣布疆偿,位于F島的核電站,受9級(jí)特大地震影響搓幌,放射性物質(zhì)發(fā)生泄漏杆故。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,283評(píng)論 3 307
  • 文/蒙蒙 一鼻种、第九天 我趴在偏房一處隱蔽的房頂上張望反番。 院中可真熱鬧,春花似錦叉钥、人聲如沸罢缸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,286評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)枫疆。三九已至,卻和暖如春敷鸦,著一層夾襖步出監(jiān)牢的瞬間息楔,已是汗流浹背寝贡。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,512評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留值依,地道東北人圃泡。 一個(gè)月前我還...
    沈念sama閱讀 45,536評(píng)論 2 354
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像愿险,于是被迫代替她去往敵國(guó)和親颇蜡。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,828評(píng)論 2 345

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

  • 3. JSX JSX是對(duì)JavaScript語(yǔ)言的一個(gè)擴(kuò)展語(yǔ)法辆亏, 用于生產(chǎn)React“元素”风秤,建議在描述UI的時(shí)候...
    pixels閱讀 2,806評(píng)論 0 24
  • 說(shuō)在前面 關(guān)于 react 的總結(jié)過(guò)去半年就一直碎碎念著要搞起來(lái),各(wo)種(tai)原(lan)因(le)扮叨。心...
    陳嘻嘻啊閱讀 6,846評(píng)論 7 41
  • 本筆記基于React官方文檔缤弦,當(dāng)前React版本號(hào)為15.4.0。 1. 安裝 1.1 嘗試 開(kāi)始之前可以先去co...
    Awey閱讀 7,649評(píng)論 14 128
  • 這次的命題作文挺好,幫助自己梳理一下兵迅。 總結(jié)2017: 1)家庭:從日本搬回美國(guó)抢韭,家庭團(tuán)聚薪贫,很不錯(cuò)恍箭。孩子們也很適應(yīng)...
    番茄洋蔥丸子閱讀 251評(píng)論 1 1
  • 《釵頭鳳·無(wú)題》 天慕雨,絲絲殤瞧省。醉落紅塵自哀涼扯夭。自彷徨,無(wú)心傷鞍匾,素人不見(jiàn)交洗,管他滄桑。暢橡淑!暢构拳!暢! 夢(mèng)若醒梁棠,兩相忘...
    羽君訣閱讀 350評(píng)論 2 1