React 入門語法


React 的開發(fā)準(zhǔn)備:

<!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">
      // ** Our code goes here! **
    </script>
  </body>
</html>

React 開發(fā)用到的庫有:

  • react.js 是React 的核心庫
  • react-dom.js 是提供與DOM相關(guān)的功能
  • Browser.js 的作用是將JSX語法轉(zhuǎn)為JavaScript語法。

React 的基本語法:

React 對象:是React庫的入口梳侨。

下面是一些常見的API:
createElement:定義一個(gè)虛擬dom

React.createElement(參數(shù)一蛉威,參數(shù)二,參數(shù)三);
  • 參數(shù)一:表示虛擬dom的名稱(可以是任意元素的名稱走哺,也可以是一個(gè)組件的名稱)
  • 參數(shù)二:表示虛擬dom的一些必要的屬性(比如:id, className, title等)
  • 參數(shù)三:表示虛擬dom的子元素 (若是文本節(jié)點(diǎn)瓷翻,可以直接書寫,不必書寫createElement)
var ul = React.createElement(
    'ul',
    null,
    React.createElement('li', null, '男士'),
    React.createElement('li', null, '女士')
)

React.createClass:創(chuàng)建一個(gè)組件類

React.createClass({對象});
  • 參數(shù)是一個(gè)對象割坠,對象的屬性或方法是對組件的說明。
  • 有個(gè)必要方法render:將虛擬dom樹輸出
  • 組件類的名字第一個(gè)字母必須大寫妒牙。
  • 組件類只能包含一個(gè)頂層標(biāo)簽彼哼,否則也會報(bào)錯(cuò)。
var Uls = React.createClass({
    render: function(){
      return(
        <ul>
          <li>男裝</li>
          <li>女裝</li>
        </ul>
      )
    }
});
ReactDOM.render(<Uls><Uls>, document.getElementById('example'));
ReactDom對象: 操作dom

ReactDOM.render 方法: 是將虛擬dom渲染到頁面

ReactDom.render(參數(shù)一湘今,參數(shù)二敢朱,參數(shù)三);
  • 第一個(gè)參數(shù):表示虛擬dom
  • 第二個(gè)參數(shù):表示真實(shí)dom容器元素
  • 第三個(gè)參數(shù):表示一個(gè)回調(diào)函數(shù)

其他語法

JSX中插值

插值:向虛擬DOM中動態(tài)的插值(可以插入元素內(nèi)容中,也可以插入元素屬性中)
語法:大括號{}

var Header = React.createClass({
  render: function(){
    var name = 'Jack';
    var oDate = new Date();
    return (
      <div>
        <span>{name}</span>
        <span>{oDate.getHours() > 12 ? '下午好':'上午好'}</span>
      </div>
    );
  }
});
ReactDOM.render(<Header></Header>,document.getElementById('example'));

注意點(diǎn):

  • JSX中 不能使用if else語句摩瞎,但是可以使用三元運(yùn)算表達(dá)式來代替拴签。
  • JSX中 注釋需要寫在花括號中。
列表渲染

JSX 遇到數(shù)組旗们,會自動展開所有成員

var List = React.createClass({
  createLi: function() {
    var arr = ['蘋果’, '梨', '橘子'];
    return arr.map(function(index, value){
      return (<li>{value}</li>);
    });
  },
  render: function() {
    return (
      <ul>{this.createLis()}</ul>
    );
  }
});
React.render(<List></List>, document.getElementById('example'));

兩個(gè)描述性的屬性

Props 屬性:

props 是在組件創(chuàng)建時(shí)候提供的蚓哩,往往是不會更改的。
獲取屬性:this.props
設(shè)置默認(rèn)屬性:getDefaultProps

var List = React.createClass({
    getDefaultProps: function() {
        return {
            titleData: ['默認(rèn)標(biāo)題']
        };
    },
    getTitle: function(){
        return this.props.titleData.map(function(value, index){
            return (
                <li key={index}>{value}</li>
            );
        });
    }, 
    render: function(){
        return (
            <ul>{this.getTitle()}</ul>
        );
    }
});

ReactDOM.render(<List titleData={['北京','天津']}></List>, document.getElementById('example'));

State狀態(tài)上渴,

組件內(nèi)部維護(hù)的一個(gè)數(shù)據(jù)岸梨,通常在組件發(fā)生交互時(shí)候發(fā)生改變。
獲取屬性:this.state
設(shè)置默認(rèn)屬性:getInitialState
改變狀態(tài):this.setState

var Nav =React.createClass({
    changeNav: function() {
        this.setState({
            num: this.state.num+1
        });
    },
    getInitialState: function(){
        return {
            num : 0
        }
    },
    render: function(){
        return (
            <div>
                <ul>
                    <li style={{display: this.state.num % 3 == 0 ? 'block' : 'none'}}>111 111 111</li>
                    <li style={{display: this.state.num % 3 == 1 ? 'block' : 'none'}}>222 222 222</li>
                    <li style={{display: this.state.num % 3 == 2 ? 'block' : 'none'}}>333 333 333</li>
                </ul>
                <span onClick={this.changeNav}>換一換</span>
            </div>
        );
    }
});
ReactDOM.render(<Nav></Nav>, document.getElementById('header'));

State 與 props 比較
相同點(diǎn):在改變的時(shí)候稠氮,都會觸發(fā)render函數(shù)
區(qū)別:props 是在組件創(chuàng)建時(shí)候提供的曹阔,往往是不會更改的;state 在組件發(fā)生交互的時(shí)候改變隔披。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末赃份,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子奢米,更是在濱河造成了極大的恐慌抓韩,老刑警劉巖纠永,帶你破解...
    沈念sama閱讀 216,651評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異园蝠,居然都是意外死亡渺蒿,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,468評論 3 392
  • 文/潘曉璐 我一進(jìn)店門彪薛,熙熙樓的掌柜王于貴愁眉苦臉地迎上來茂装,“玉大人,你說我怎么就攤上這事善延∩偬” “怎么了?”我有些...
    開封第一講書人閱讀 162,931評論 0 353
  • 文/不壞的土叔 我叫張陵易遣,是天一觀的道長彼妻。 經(jīng)常有香客問我,道長豆茫,這世上最難降的妖魔是什么侨歉? 我笑而不...
    開封第一講書人閱讀 58,218評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮揩魂,結(jié)果婚禮上幽邓,老公的妹妹穿的比我還像新娘。我一直安慰自己火脉,他們只是感情好牵舵,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,234評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著倦挂,像睡著了一般畸颅。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上方援,一...
    開封第一講書人閱讀 51,198評論 1 299
  • 那天没炒,我揣著相機(jī)與錄音,去河邊找鬼犯戏。 笑死窥浪,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的笛丙。 我是一名探鬼主播漾脂,決...
    沈念sama閱讀 40,084評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼胚鸯!你這毒婦竟也來了骨稿?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,926評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎坦冠,沒想到半個(gè)月后形耗,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,341評論 1 311
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡辙浑,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,563評論 2 333
  • 正文 我和宋清朗相戀三年激涤,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片判呕。...
    茶點(diǎn)故事閱讀 39,731評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡倦踢,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出侠草,到底是詐尸還是另有隱情辱挥,我是刑警寧澤,帶...
    沈念sama閱讀 35,430評論 5 343
  • 正文 年R本政府宣布边涕,位于F島的核電站晤碘,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏功蜓。R本人自食惡果不足惜园爷,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,036評論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望式撼。 院中可真熱鬧童社,春花似錦、人聲如沸端衰。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,676評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽旅东。三九已至,卻和暖如春十艾,著一層夾襖步出監(jiān)牢的瞬間抵代,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,829評論 1 269
  • 我被黑心中介騙來泰國打工忘嫉, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留荤牍,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,743評論 2 368
  • 正文 我出身青樓庆冕,卻偏偏與公主長得像康吵,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子访递,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,629評論 2 354

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

  • 原教程內(nèi)容詳見精益 React 學(xué)習(xí)指南晦嵌,這只是我在學(xué)習(xí)過程中的一些閱讀筆記,個(gè)人覺得該教程講解深入淺出,比目前大...
    leonaxiong閱讀 2,834評論 1 18
  • 以下內(nèi)容是我在學(xué)習(xí)和研究React時(shí)惭载,對React的特性旱函、重點(diǎn)和注意事項(xiàng)的提取、精練和總結(jié)描滔,可以做為React特性...
    科研者閱讀 8,232評論 2 21
  • It's a common pattern in React to wrap a component in an ...
    jplyue閱讀 3,264評論 0 2
  • 海芬/文 花開的季節(jié) 春風(fēng)沐浴大地 風(fēng)兒撫摸過枝頭 開了好多的奇葩 網(wǎng)絡(luò)的春天 比現(xiàn)實(shí)還要繁華 小擁抱爬上枯枝 變...
    海語天籟閱讀 536評論 2 5
  • 有許多文字寫下時(shí)已經(jīng)忘了意義 再次回首含长,亦如初見 不止是字券腔,連人也是 這一刻所見之人,已非上一刻所見之人 個(gè)中滋味...
    蝶水月秋千閱讀 1,466評論 0 0