來一個(gè)React極速入門吧

????React是目前全球使用量最大的框架大脉,F(xiàn)aceBook出品,心疼扎克水孩,入駐中國又一次涼了镰矿。去年React16發(fā)布,F(xiàn)B的大佬們重寫了底層架構(gòu)取名曰Fiber俘种,性能大幅提升秤标,高大上啊,React這么好宙刘,我選擇Vue抛杨,畢竟鐵粉~哈哈。最近開始在看vue的源碼荐类,希望以后也一點(diǎn)點(diǎn)分享我的擼源碼心得怖现。

????回歸正題,快速,飛速屈嗤,不對(duì)潘拨,極速上手?jǐn)]React。我們以一個(gè)最最簡(jiǎn)單的demo來講解一下React最最基本的使用饶号。當(dāng)然這里你如果之前有過Vue或者Angular的基礎(chǔ)會(huì)理解起來容易很多铁追,畢竟核心都是數(shù)據(jù)驅(qū)動(dòng)。

? ? 我這里以MacOS講解茫船,Windows差距也不大琅束。首先,開機(jī)K闾浮I鳌!打開控制臺(tái)然眼,cd到你的任一文件夾艾船,輸入mkdir xxx。就輸react吧


建立react文件夾


然后cd到react里面高每,這里先裝node屿岂,這個(gè)我就不多說了。然后安裝React腳手架鲸匿,如果你用過vue-cli的話爷怀,其實(shí)就是一樣的東西。我們輸入npm i create-react-app -g記得全局安裝~


安裝腳手架

裝好了带欢,我們繼續(xù)輸入create-react-app xxx,xxx是你起的文件夾名字霉撵,隨意,我們就取myapp吧,這個(gè)過程可能比較慢洪囤,要從GitHub里拉模板還有裝各種依賴徒坡,磨煉你的耐心。


建立工程

好瘤缩,在最下面可以看到喇完,我們裝的最新版的React16.4,對(duì)應(yīng)的React-dom也是一樣剥啤,這里要注意的就是如果說你不使用腳手架的自己手動(dòng)安裝react和react-dom的時(shí)候版本一定要保持一致锦溪,不然會(huì)報(bào)錯(cuò)。當(dāng)然一般情況不會(huì)遇到這個(gè)坑府怯。


開擼

再往下拉刻诊,他說你可以擼下面幾個(gè)命令,第一個(gè)npm start啟動(dòng)項(xiàng)目牺丙,第二個(gè)run build是打包了则涯,暫時(shí)用不到复局,第三個(gè)test測(cè)試也用不到,第四個(gè)eject, 射粟判,彈射亿昏,想想就恐怖,這玩意最好別碰档礁,后面還提醒你角钩,你射了就不能后悔了。這東西就是把webpack配置開放給你呻澜,默認(rèn)你是看不到這些配置文件的递礼,這個(gè)后面我們?cè)僬f。一般情況官方默認(rèn)配置我們就夠用了羹幸,當(dāng)然你想具體了解webpack另說脊髓。

最后我們按他的提示,cd myapp然后npm start開擼開擼


本地服務(wù)啟動(dòng)成功


第一個(gè)React App

過一會(huì)睹欲,網(wǎng)頁自動(dòng)打開了,臥槽一屋,牛逼窘疮,如果你用過vue-cli 2.x就會(huì)發(fā)現(xiàn)我們還要手動(dòng)打開瀏覽器,很low冀墨,其實(shí)也可以實(shí)現(xiàn)的闸衫,只要在packjson里script里的npm start里的webpack-dev-server 后面加上一個(gè)--open的參數(shù)就ok了,腳手架诽嘉,就是提升工作效率的蔚出,還不是因?yàn)槌绦騿T懶嘛。

接著我們看下項(xiàng)目工程目錄


工程目錄

很整潔清爽虫腋,有沒有骄酗,你發(fā)現(xiàn),找不到webpack配置文件悦冀,想要的話趋翻,射一下就出來了。

node_modules不用說盒蟆,npm黑洞一般的依賴文件踏烙,public就是我們?nèi)肟趆tml,下面那個(gè)manifest先不用管,PWA相關(guān)的历等。再看下面讨惩,src就是我們工程源碼目錄了,下面那個(gè)一長(zhǎng)串的servicework的也不用管寒屯,也是PWA的荐捻。好,看下最重要的入口文件,index.js


入口文件

這里import是es6的模塊化靴患,代替了我們過去寫一堆script標(biāo)簽仍侥,不利于維護(hù)。

首先我們看到引入了React和React和ReactDOM這倆核心庫鸳君,然后引入了css农渊,最后引入了一個(gè)關(guān)鍵的App組件,下面的serviceworker略過或颊。

最下面的就是ReactDOM的render函數(shù)渲染了砸紊,這里JSX語法可以直接寫html標(biāo)簽,后面第二個(gè)參數(shù)就是你要掛載的dom節(jié)點(diǎn)囱挑,你會(huì)想root在哪醉顽。找到之前的public文件夾下的入口html文件


終于等到你

看到?jīng)]有,我們之前的整個(gè)項(xiàng)目的代碼都是渲染在這個(gè)root之下平挑。當(dāng)然這也導(dǎo)致一個(gè)問題游添,seo也就能看到一個(gè)root,對(duì)應(yīng)我們可以采用ssr解決通熄,扯遠(yuǎn)了唆涝。

我們來編寫第一個(gè)hello world.進(jìn)入App.js


app.js

愉快地?cái)]es6吧,開局一個(gè)class剩下全靠編唇辨,其他我就不細(xì)說了廊酣,我們把里面的header和p標(biāo)簽全部刪掉寫上我們的Hello world。赏枚。亡驰。


hello world

然后ctrl+S保存,切到瀏覽器饿幅,不用手動(dòng)刷新凡辱,webpack-dev-server已經(jīng)幫我們熱更新了。


好了栗恩,可以說是精通React了

好煞茫,我們現(xiàn)在嘗試自己寫一個(gè)新的組件。我們?cè)趕rc下新建一個(gè)文件Tqq.js摄凡,內(nèi)容就把之前的copy一份來续徽。好了,現(xiàn)在App.js就是我李哥亲澡,Tqq.js就是我钦扭,李哥的小弟。小弟呼喊床绪,社會(huì)我李哥客情,我李哥牛逼其弊!記住最后要export default把tqq這個(gè)小弟給派出去,不然我李哥無法調(diào)遣小弟干活膀斋。


我李哥

接下來我們進(jìn)入到App.js里梭伐,看看李哥在干嘛。


app.js

把我小弟tqq給import進(jìn)來仰担,import Tqq from './Tqq.js', 當(dāng)然.js后綴你可以不寫糊识,Tqq的名字也可以改的,李哥想叫小弟啥名就叫啥名摔蓝。


一個(gè)root

接下來看最關(guān)鍵的一點(diǎn)赂苗,我李哥是大哥,獨(dú)裁贮尉,所以每個(gè)組件默認(rèn)只能有一個(gè)根節(jié)點(diǎn)拌滋,就是我最外層的div,不然會(huì)報(bào)錯(cuò)猜谚。小伙子败砂,你想造反?魏铅?昌犹?如下圖,


只能有一個(gè)根節(jié)點(diǎn)

好沦零,接下來祭隔,我們來看看我李哥給自己的稱呼货岭。也就是組件的數(shù)據(jù)存儲(chǔ)路操,我們?cè)赾lass里寫一個(gè)構(gòu)造器,數(shù)據(jù)放在this.state里千贯,比如我們存一個(gè)李哥屯仗。


this.state

然后我們肯定要讓李哥出來快活啊。我們就要在組件里召喚我李哥搔谴,把Hello world的world換成我李哥魁袜。在React里綁定數(shù)據(jù)用的是{},和vue和angular的{{}}不一樣


李哥出來快活啊

然后我們保存看看李哥出來快活沒


李哥在快活

下面小弟齊呼敦第,社會(huì)我李哥峰弹,我李哥牛逼!

李哥聽久了這稱呼也聽膩了芜果,決定讓小弟們改口鞠呈,叫豬哥。所以李哥就要下令了右钾,怎么下令呢蚁吝。李哥決定加一個(gè)command的按鈕旱爆,這里注意,onClick的C要大寫窘茁,然后李哥下令怀伦,大家以后改口喊豬哥,怎么改就要改state的值了山林,React給我們提供了一個(gè)api叫setState房待,我們只能通過它去修改state的數(shù)據(jù)


? 改口豬哥


李哥要下令了

點(diǎn)擊李哥下令改口,一片紅捌朴,下令失敗吴攒,什么情況


下令失敗了

找不到setState?砂蔽?洼怔?李哥很不爽,下令嚴(yán)查左驾,最后發(fā)現(xiàn)這個(gè)鍋要this來背镣隶,我們點(diǎn)擊下令按鈕觸發(fā)command的事件的時(shí)候,此時(shí)的this執(zhí)行上下文我們是指向當(dāng)前的button按鈕的诡右,按鈕上肯定是沒有setState的安岂,所以我們要綁定到外層執(zhí)行上下文,所以我們修改一下onClick


bind改變this指向

現(xiàn)在帆吻,李哥再次下令改口域那。


改口

李哥發(fā)現(xiàn)雖然改口成功了,但只有他自己知道猜煮,下面小弟tqq不知道啊次员。所以要把改口令的數(shù)據(jù)傳遞下去給小弟們。我們找到小弟tqq,然后跟他們說以后喊李哥要喊這個(gè)name王带,把this.state.name傳遞給tqq小弟


傳遞給小弟

但是淑蔚,李哥發(fā)現(xiàn)關(guān)告訴小弟還不夠啊,小弟們要接受一下愕撰。

所以我們切到Tqq.js里刹衫,通過this.props.name接受一下李哥的下的命令


小弟接受命令

ok,李哥心滿意足搞挣,正式下令带迟。改口豬哥。


點(diǎn)擊下令


下令成功

李哥還覺得不太滿意囱桨,感覺小弟們口號(hào)太小了仓犬。要大一點(diǎn)。這就需要css了蝇摸,還記得前面的App.css嗎婶肩,我們點(diǎn)進(jìn)去把之前的都刪了办陷,自己寫一個(gè)class


css

好,下面要在Tqq.js里面使用這個(gè)dalao


綁定類

我們給div加一個(gè)class律歼,記住要寫className,N要大寫民镜,不然React會(huì)報(bào)錯(cuò)。保存


我李哥牛逼

李哥大喜险毁,大赦天下制圈!

好了,先寫這么多吧畔况,入門應(yīng)該也夠了鲸鹦。畢竟我對(duì)React會(huì)的也不多,畢竟我是尤大鐵粉~

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末跷跪,一起剝皮案震驚了整個(gè)濱河市馋嗜,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌吵瞻,老刑警劉巖葛菇,帶你破解...
    沈念sama閱讀 207,248評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異橡羞,居然都是意外死亡眯停,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,681評(píng)論 2 381
  • 文/潘曉璐 我一進(jìn)店門卿泽,熙熙樓的掌柜王于貴愁眉苦臉地迎上來莺债,“玉大人,你說我怎么就攤上這事签夭∑氚睿” “怎么了?”我有些...
    開封第一講書人閱讀 153,443評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我算途,道長(zhǎng)履婉,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,475評(píng)論 1 279
  • 正文 為了忘掉前任宣羊,我火速辦了婚禮璧诵,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘仇冯。我一直安慰自己之宿,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,458評(píng)論 5 374
  • 文/花漫 我一把揭開白布苛坚。 她就那樣靜靜地躺著比被,像睡著了一般色难。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上等缀,一...
    開封第一講書人閱讀 49,185評(píng)論 1 284
  • 那天枷莉,我揣著相機(jī)與錄音,去河邊找鬼尺迂。 笑死笤妙,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的噪裕。 我是一名探鬼主播蹲盘,決...
    沈念sama閱讀 38,451評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼膳音!你這毒婦竟也來了召衔?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,112評(píng)論 0 261
  • 序言:老撾萬榮一對(duì)情侶失蹤祭陷,失蹤者是張志新(化名)和其女友劉穎薄嫡,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體颗胡,經(jīng)...
    沈念sama閱讀 43,609評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡毫深,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,083評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了毒姨。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片哑蔫。...
    茶點(diǎn)故事閱讀 38,163評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖弧呐,靈堂內(nèi)的尸體忽然破棺而出闸迷,到底是詐尸還是另有隱情,我是刑警寧澤俘枫,帶...
    沈念sama閱讀 33,803評(píng)論 4 323
  • 正文 年R本政府宣布腥沽,位于F島的核電站,受9級(jí)特大地震影響鸠蚪,放射性物質(zhì)發(fā)生泄漏今阳。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,357評(píng)論 3 307
  • 文/蒙蒙 一茅信、第九天 我趴在偏房一處隱蔽的房頂上張望盾舌。 院中可真熱鬧,春花似錦蘸鲸、人聲如沸妖谴。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,357評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽膝舅。三九已至嗡载,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間仍稀,已是汗流浹背鼻疮。 一陣腳步聲響...
    開封第一講書人閱讀 31,590評(píng)論 1 261
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留琳轿,地道東北人判沟。 一個(gè)月前我還...
    沈念sama閱讀 45,636評(píng)論 2 355
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像崭篡,于是被迫代替她去往敵國和親挪哄。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,925評(píng)論 2 344

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