React學(xué)習(xí)分享(一)

寫(xiě)這篇文章的主要目的是為了加強(qiáng)自己的記憶臊岸,也給別的同事一個(gè)快速入門(mén)的教程。

如果你覺(jué)得下載React環(huán)境比較麻煩尊流,那么你可以直接打開(kāi)CodePen,在這個(gè)頁(yè)面直接進(jìn)行demo的練習(xí)可以很直觀的看到效果帅戒。

簡(jiǎn)單示例

介紹什么的就不說(shuō)了,百度一搜一大堆奠旺,我們直接進(jìn)入正題蜘澜。
先來(lái)一個(gè)最簡(jiǎn)單的演示:

ReactDOM.render(
  <h1>Hello, world!</h1>,
  document.getElementById('root')
);

這段代碼就會(huì)在頁(yè)面上打出“Hello,world!”响疚,自己可以在上文介紹的鏈接中試一試。

JSX

這里先介紹一下jsx瞪醋,看名字很唬人忿晕,其實(shí)就是html和js的結(jié)合顯示,其實(shí)看起來(lái)有點(diǎn)像模板語(yǔ)言银受,例如freemarker践盼、thymeleaf等鸦采,具體怎么編譯和解析它,我們不用去關(guān)心咕幻,有專門(mén)的解析器(babel ...)去做這個(gè)事渔伯。

 const element = <h1>Hello, world!</h1>;

 function formatName(user) {
   return user.firstName + ' ' + user.lastName;
 }

 const user = {
     firstName: 'Harper',
     lastName: 'Perez'
 };

const element = (
  <h1>
    Hello, {formatName(user)}!
  </h1>
);

ReactDOM.render(
  element,
  document.getElementById('root')
);

上面的“element”都符合jsx,并且jsx也可以給屬性賦值:

const element = <div tabIndex="0"></div>;
const element = <img src={user.avatarUrl}></img>;

使用雙引號(hào)或者大括號(hào)均可賦值肄程,但是不能一起使用锣吼。
并且在被賦值的屬性一定是遵循駝峰命名法的例如上例中的“tabIndex”在html中是“tabindex”。

如果標(biāo)簽中沒(méi)有內(nèi)容形如<……><……/>可以直接寫(xiě)為</>蓝厌,例如:

const element = <img src={user.avatarUrl} />;

JSX也支持標(biāo)簽擁有子類玄叠,例如:

const element = (
  <div>
    <h1>Hello!</h1>
    <h2>Good to see you here.</h2>
  </div>
);

并且,JSX能夠有效的防止注入攻擊拓提,默認(rèn)情況下读恃,在呈現(xiàn)之前,DOM會(huì)轉(zhuǎn)義嵌入在JSX中的任何值代态。因此寺惫,它可以確保永遠(yuǎn)不會(huì)注入在應(yīng)用程序中沒(méi)有顯式編寫(xiě)的任何內(nèi)容。在呈現(xiàn)之前蹦疑,所有的內(nèi)容都轉(zhuǎn)換為字符串西雀。

在React中我們會(huì)大量的使用JSX和ES6語(yǔ)法,希望正在讀這篇文章的各位有這個(gè)基礎(chǔ)必尼,關(guān)于ES6的學(xué)習(xí)蒋搜,這里介紹ES6標(biāo)準(zhǔn)入門(mén)(第三版 阮一峰 著)
當(dāng)然判莉,希望大家能去買(mǎi)正版的書(shū)豆挽,畢竟是人家的勞動(dòng)成果。

元素

元素(element)是React應(yīng)用中最小的構(gòu)建塊券盅。和瀏覽器DOM的element相比帮哈,React的element就是一個(gè)簡(jiǎn)單的對(duì)象,創(chuàng)建的代價(jià)相當(dāng)?shù)兔潭疲蒖eact DOM負(fù)責(zé)將React elements匹配到對(duì)應(yīng)的DOM節(jié)點(diǎn)娘侍。

注意:不要將元素(element)和組件(component)的概念混淆。

將元素渲染到DOM

首先泳炉,得創(chuàng)建一個(gè)接收節(jié)點(diǎn):

<div id="root"></div>

在設(shè)計(jì)這個(gè)地方要顯示什么內(nèi)容的時(shí)候憾筏,要先考慮最終以什么樣的方式呈現(xiàn)內(nèi)容,因?yàn)橐话阒挥幸粋€(gè)root節(jié)點(diǎn)花鹅。
通過(guò)調(diào)用 ReactDOM.render() 將React element渲染到root DOM 節(jié)點(diǎn):

const element = <h1>Hello, world</h1>;
ReactDOM.render(
  element,
  document.getElementById('root')
);

你可以在CodePen中嘗試一下氧腰。

更新元素

React element 一旦創(chuàng)建就是不可變的,你不能改變他的屬性或是其他任何東西。如果你想要?jiǎng)討B(tài)的改變頁(yè)面的顯示古拴,那么最適合的方式就是重新創(chuàng)建一個(gè)element(如果名字相同箩帚,只會(huì)更新要修改的那一句,相當(dāng)高效)并調(diào)用ReactDOM.render()黄痪,舉個(gè)栗子 ^ _ ^:

function tick() {
  const element = (
    <div>
      <h1>Hello, world!</h1>
      <h2>
        It is{' '}
        {new Date().toLocaleTimeString()}.
      </h2>
    </div>
  );
  ReactDOM.render(
    element,
    document.getElementById('root')
  );
}

setInterval(tick, 1000);
//你可以用瀏覽器調(diào)試工具監(jiān)控這段代碼的刷新情況紧帕,會(huì)有更深的印象。

好的桅打,先寫(xiě)這么多是嗜。如果對(duì)你的學(xué)習(xí)有用,請(qǐng)關(guān)注我~~

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末油额,一起剝皮案震驚了整個(gè)濱河市叠纷,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌潦嘶,老刑警劉巖涩嚣,帶你破解...
    沈念sama閱讀 211,290評(píng)論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異掂僵,居然都是意外死亡航厚,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,107評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門(mén)锰蓬,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)幔睬,“玉大人,你說(shuō)我怎么就攤上這事芹扭÷槎ィ” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,872評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵舱卡,是天一觀的道長(zhǎng)辅肾。 經(jīng)常有香客問(wèn)我,道長(zhǎng)轮锥,這世上最難降的妖魔是什么矫钓? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,415評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮舍杜,結(jié)果婚禮上新娜,老公的妹妹穿的比我還像新娘。我一直安慰自己既绩,他們只是感情好概龄,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,453評(píng)論 6 385
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著饲握,像睡著了一般旁钧。 火紅的嫁衣襯著肌膚如雪吸重。 梳的紋絲不亂的頭發(fā)上互拾,一...
    開(kāi)封第一講書(shū)人閱讀 49,784評(píng)論 1 290
  • 那天歪今,我揣著相機(jī)與錄音,去河邊找鬼颜矿。 笑死寄猩,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的骑疆。 我是一名探鬼主播田篇,決...
    沈念sama閱讀 38,927評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼箍铭!你這毒婦竟也來(lái)了泊柬?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,691評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤诈火,失蹤者是張志新(化名)和其女友劉穎兽赁,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體冷守,經(jīng)...
    沈念sama閱讀 44,137評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡刀崖,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,472評(píng)論 2 326
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了拍摇。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片亮钦。...
    茶點(diǎn)故事閱讀 38,622評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖充活,靈堂內(nèi)的尸體忽然破棺而出蜂莉,到底是詐尸還是另有隱情,我是刑警寧澤混卵,帶...
    沈念sama閱讀 34,289評(píng)論 4 329
  • 正文 年R本政府宣布映穗,位于F島的核電站,受9級(jí)特大地震影響淮菠,放射性物質(zhì)發(fā)生泄漏男公。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,887評(píng)論 3 312
  • 文/蒙蒙 一合陵、第九天 我趴在偏房一處隱蔽的房頂上張望枢赔。 院中可真熱鬧,春花似錦拥知、人聲如沸踏拜。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,741評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)速梗。三九已至肮塞,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間姻锁,已是汗流浹背枕赵。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,977評(píng)論 1 265
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留位隶,地道東北人拷窜。 一個(gè)月前我還...
    沈念sama閱讀 46,316評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像涧黄,于是被迫代替她去往敵國(guó)和親篮昧。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,490評(píng)論 2 348

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

  • 一:react了解 //是react的核心庫(kù) //是提供了與dom相關(guān)的功能 /...
    大佬_娜閱讀 331評(píng)論 0 0
  • 筆記參考:阮一峰react入門(mén)教程 一笋妥、初識(shí)React 1.特點(diǎn) 基于組件懊昨,組件里面有自己的state,用組件來(lái)做...
    恰皮閱讀 1,221評(píng)論 1 21
  • 3. JSX JSX是對(duì)JavaScript語(yǔ)言的一個(gè)擴(kuò)展語(yǔ)法春宣, 用于生產(chǎn)React“元素”酵颁,建議在描述UI的時(shí)候...
    pixels閱讀 2,809評(píng)論 0 24
  • 最近看了一本關(guān)于學(xué)習(xí)方法論的書(shū),強(qiáng)調(diào)了記筆記和堅(jiān)持的重要性信认。這幾天也剛好在學(xué)習(xí)React材义,所以我打算每天堅(jiān)持一篇R...
    gaoer1938閱讀 1,672評(píng)論 0 5
  • 一周一周過(guò)得飛快。 運(yùn)動(dòng):拍球和跳繩提上來(lái)嫁赏。拍球其掂,節(jié)奏,穩(wěn)潦蝇。跳繩款熬,體力。 周一到周五上午在小區(qū)參加游游媽的暑期國(guó)文...
    六點(diǎn)半_411b閱讀 171評(píng)論 0 0