React

https://facebook.github.io/react/
JavaScript庫,只為構(gòu)建用戶界面榔幸,以組件為基礎(chǔ),寫一次就可以在多處運(yùn)行

React特性

  • jsx--使用簡單
  • 單向數(shù)據(jù)流--數(shù)據(jù)綁定簡單
  • 虛擬dom--加快程序的運(yùn)行效率
  • 組件化開發(fā)
  • 局限性:如何在子組件里操作父組件的數(shù)據(jù)霉囚;

安裝

  • node_modules
  • 創(chuàng)建package.json (npm init)
  • npm install --save react react-dom package.json 里面的name不能和react一樣
  • console.log(window); 搜索react可以很便捷的看到引入react文件后給我添加了哪些屬性和方法

一個(gè)簡單的例子

<!DOCTYPE html>
  <html>  
    <head>    
      <script src="../build/react.js"></script>    
      <script src="../build/react-dom.js"></script>    
      <script src="../build/browser.min.js"></script>  
    </head>  
         <body>    
              <div id="example"></div>    
              <script type="text/babel">      
                    ReactDOM.render(        
                         <h1>Hello, world!</h1>,          
                         document.getElementById('example')      
                    );    
              </script>  
         </body>
    </html>
  • 首先柄粹,注意到最后一個(gè)script標(biāo)簽對(duì)的type屬性是"text/babel",這是因?yàn)閞eact獨(dú)有的JSX語法键畴,與JavaScript不兼容最盅。凡是使用JSX語法的地方,都要加type="text/babel"起惕。

  • 上面的代碼一共引用了三個(gè)庫涡贱,它們必須首先加載,react.js是react的核心庫惹想,react-dom.js是提供與DOM相關(guān)的功能问词,browser.min.js的作用是將JSX語法轉(zhuǎn)為JavaScript語法。實(shí)際上線的時(shí)候嘀粱,應(yīng)該放在服務(wù)器上完成激挪。
    $ babel src --out-dir build

    • 這句代碼可以將src子目錄的 js文件進(jìn)行語法轉(zhuǎn)換,轉(zhuǎn)碼后的文件全部放在 build子目錄锋叨。

一垄分、ReactDOM.render()

  • 是react最基本的方法,用于將模版轉(zhuǎn)為html語言悲柱,并插入指定的DOM節(jié)點(diǎn)中锋喜。

二、JSX語法

  • JSX --模版引擎 和ejs/jade一樣

  • 上面的代碼中豌鸡,html直接寫在了JavaScript語言中嘿般,不加任何引號(hào),這就是JSX語法涯冠,它允許這樣的混寫炉奴。
    var names=['zhangsan','lisi','wangwu'];
    ReactDOM.render(
    <div>
    {
    names.map(function(name){
    return <div> hello {name} !</div>
    })
    }
    </div>,
    document.getElementById('example')
    );

  • 上面這段代碼,體現(xiàn)了JSX基本的語法規(guī)則:遇到html標(biāo)簽(以'<'開頭)就用html規(guī)則解析蛇更;遇到代碼塊(以'{'開頭)就以JavaScript規(guī)則解析瞻赶。

  • JSX允許在模版中插入JavaScript變量,如果這個(gè)變量是數(shù)組派任,則會(huì)展開這個(gè)數(shù)組的所有成員砸逊。
    var arr=[<h1>hello react!</h1>,<h3>react is awesome!</h3>];
    ReactDOM.render(
    <div>{arr}</div>,
    document.getElementById("#example")
    );


三、組件

  • 組件可以讓你把UI分割成獨(dú)立的掌逛、可重用的部件,單獨(dú)地考慮每一塊师逸。

  • react允許將代碼封裝成組件,然后像插入一個(gè)普通標(biāo)簽一樣豆混,把這個(gè)組件插入到頁面中篓像。React.createClass()用于生成一個(gè)組件類

  • 在使用已經(jīng)定義好的組件時(shí)动知,可以傳入屬性,并且可以在組件的內(nèi)部獲取到傳進(jìn)來的值:
    this.props.屬性名;
    不能在組件內(nèi)部更改傳進(jìn)來的屬性的值员辩。

  • arr.map() map--映射
    var arr=[1,2,3,45,6];
    arr.map(function(a,b,c){ //元素盒粮,下標(biāo),值
    console.log(a)
    })
    example:
    class Map extends React.Component{
    render(){
    return (
    <div>
    {(this.props.children).map(function(a,b){
    return <li key=奠滑>{a}</li>
    })}
    </div>
    )
    }
    }
    ReactDOM.render(<Map><span>arr.map</span><span>map</span><span>Map</span></Map>,document.getElementById("example"))

  • 渲染的組件必須是一個(gè)完整的結(jié)構(gòu)丹皱,只能有一個(gè)根元素
    class Abc extends React.Component{
    render(){
    return (
    <ul>
    <li></li>
    <div></div>
    </ul>
    )
    }
    }

  • ★ 想要在組件內(nèi)部改變狀態(tài) 首先設(shè)置初始值state={}; 使用方法setState 可以:

    • 重新設(shè)置 state的值

    • 并重新進(jìn)行渲染
      class State extends React.Component{

      }
      
  • 生命周期
    componentWillMount(){console.log('準(zhǔn)備渲染')}
    componentDidMount(){console.log('渲染完畢')}

    componentWillUpdate(){console.log('即將更新')}
    componentDidUpdate(){console.log('更新完畢')}
    shouldComponentUpdate(){}  //確定要更新? 返回一個(gè)布爾值
    
    componentWillReceiveProps(){console.log('元素的屬性即將發(fā)生更改')}
    
    render(){console.log('正在渲染')}
    
  • 組件---流程是最重要的 思想最重要 但在技術(shù)角度來說是最不重要的 重在邏輯

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末养叛,一起剝皮案震驚了整個(gè)濱河市种呐,隨后出現(xiàn)的幾起案子宰翅,更是在濱河造成了極大的恐慌弃甥,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,378評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件汁讼,死亡現(xiàn)場(chǎng)離奇詭異淆攻,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)嘿架,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門瓶珊,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人耸彪,你說我怎么就攤上這事伞芹。” “怎么了蝉娜?”我有些...
    開封第一講書人閱讀 152,702評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵唱较,是天一觀的道長。 經(jīng)常有香客問我召川,道長南缓,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,259評(píng)論 1 279
  • 正文 為了忘掉前任荧呐,我火速辦了婚禮汉形,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘倍阐。我一直安慰自己概疆,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,263評(píng)論 5 371
  • 文/花漫 我一把揭開白布峰搪。 她就那樣靜靜地躺著岔冀,像睡著了一般。 火紅的嫁衣襯著肌膚如雪罢艾。 梳的紋絲不亂的頭發(fā)上楣颠,一...
    開封第一講書人閱讀 49,036評(píng)論 1 285
  • 那天尽纽,我揣著相機(jī)與錄音,去河邊找鬼童漩。 笑死弄贿,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的矫膨。 我是一名探鬼主播差凹,決...
    沈念sama閱讀 38,349評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼侧馅!你這毒婦竟也來了危尿?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,979評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤馁痴,失蹤者是張志新(化名)和其女友劉穎谊娇,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體罗晕,經(jīng)...
    沈念sama閱讀 43,469評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡济欢,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,938評(píng)論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了小渊。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片法褥。...
    茶點(diǎn)故事閱讀 38,059評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖酬屉,靈堂內(nèi)的尸體忽然破棺而出半等,到底是詐尸還是另有隱情,我是刑警寧澤呐萨,帶...
    沈念sama閱讀 33,703評(píng)論 4 323
  • 正文 年R本政府宣布杀饵,位于F島的核電站,受9級(jí)特大地震影響垛吗,放射性物質(zhì)發(fā)生泄漏凹髓。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,257評(píng)論 3 307
  • 文/蒙蒙 一怯屉、第九天 我趴在偏房一處隱蔽的房頂上張望蔚舀。 院中可真熱鬧,春花似錦锨络、人聲如沸赌躺。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,262評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽礼患。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間缅叠,已是汗流浹背悄泥。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評(píng)論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留肤粱,地道東北人弹囚。 一個(gè)月前我還...
    沈念sama閱讀 45,501評(píng)論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像领曼,于是被迫代替她去往敵國和親鸥鹉。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,792評(píng)論 2 345

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

  • 原教程內(nèi)容詳見精益 React 學(xué)習(xí)指南庶骄,這只是我在學(xué)習(xí)過程中的一些閱讀筆記毁渗,個(gè)人覺得該教程講解深入淺出,比目前大...
    leonaxiong閱讀 2,810評(píng)論 1 18
  • 現(xiàn)在最熱門的前端框架单刁,毫無疑問是 React 灸异。上周,基于 React 的 React Native 發(fā)布幻碱,結(jié)果一...
    sakura_L閱讀 420評(píng)論 0 0
  • react 基本概念解析 react 的組件聲明周期 react 高階組件绎狭,context, redux 等高級(jí)...
    南航閱讀 1,052評(píng)論 0 1
  • 本筆記基于React官方文檔细溅,當(dāng)前React版本號(hào)為15.4.0褥傍。 1. 安裝 1.1 嘗試 開始之前可以先去co...
    Awey閱讀 7,649評(píng)論 14 128
  • React Native是基于React的,在開發(fā)React Native過程中少不了的需要用到React方面的知...
    亓凡閱讀 1,454評(píng)論 1 4