《React極簡教程》第一章 Hello,World!

react

React 是一個(gè)用于構(gòu)建用戶界面的 JAVASCRIPT 庫劫狠。
React主要用于構(gòu)建UI劲弦,很多人認(rèn)為 React 是 MVC 中的 V(視圖)昭躺。
React 起源于 Facebook 的內(nèi)部項(xiàng)目,用來架設(shè) Instagram 的網(wǎng)站企巢,并于 2013 年 5 月開源。
React 擁有較高的性能丑念,代碼邏輯非常簡單涡戳,越來越多的人已開始關(guān)注和使用它。

官網(wǎng):
https://facebook.github.io/react/
入門教程:
http://reactjs.cn/react/docs/getting-started-zh-CN.html

React 特點(diǎn)
1.聲明式設(shè)計(jì) ?React采用聲明范式渠欺,可以輕松描述應(yīng)用妹蔽。

2.高效 ?React通過對(duì)DOM的模擬,最大限度地減少與DOM的交互挠将。

3.靈活 ?React可以與已知的庫或框架很好地配合胳岂。

4.JSX ? JSX 是 JavaScript 語法的擴(kuò)展。React 開發(fā)不一定使用 JSX 舔稀,但我們建議使用它乳丰。

5.組件 ? 通過 React 構(gòu)建組件,使得代碼更加容易得到復(fù)用内贮,能夠很好的應(yīng)用在大項(xiàng)目的開發(fā)中产园。

6.單向響應(yīng)的數(shù)據(jù)流 ? React 實(shí)現(xiàn)了單向響應(yīng)的數(shù)據(jù)流,從而減少了重復(fù)代碼夜郁,這也是它為什么比傳統(tǒng)數(shù)據(jù)綁定更簡單什燕。

React 第一個(gè)實(shí)例:Hello,World!

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8" />
    <title>Hello React!</title>
    <script src="https://cdn.bootcss.com/react/15.4.2/react.min.js"></script>
    <script src="https://cdn.bootcss.com/react/15.4.2/react-dom.min.js"></script>
    <script src="https://cdn.bootcss.com/babel-standalone/6.22.1/babel.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>

運(yùn)行:http://www.runoob.com/try/try.php?filename=try_react_hw

解析:

實(shí)例中我們引入了三個(gè)庫: react.min.js 、react-dom.min.js 和 babel.min.js:

react.min.js

React 的核心庫

react-dom.min.js

提供與 DOM 相關(guān)的功能

babel.min.js

Babel 可以將 ES6 代碼轉(zhuǎn)為 ES5 代碼竞端,這樣我們就能在目前不支持 ES6 瀏覽器上執(zhí)行 React 代碼屎即。Babel 內(nèi)嵌了對(duì) JSX 的支持。通過將 Babel 和 babel-sublime 包(package)一同使用可以讓源碼的語法渲染上升到一個(gè)全新的水平事富。

一個(gè)稍微復(fù)雜的例子

<!DOCTYPE html>
<html>
<head>
    <meta charset='utf-8'>
    <meta charset='utf-8'>
    <meta http-equiv="X-UA-Compatible" content="chrome=1">
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
    <meta name="description" content="東海陳光劍 光劍博客 Free Ebook 免費(fèi)電子書 免費(fèi)epub電子書 電子書大全 電子書下載 光劍免費(fèi)圖書館 全球免費(fèi)開放的電子圖書館 東海陳光劍的博客">

    <!--<link  rel='stylesheet' type='text/css'>-->
    <link href='../public/css/font.css' rel='stylesheet' type='text/css'>


    <link rel="stylesheet" href="../public/css/style.css" media="screen" type="text/css">
    <link rel="stylesheet" href="../public/css/print.css" media="print" type="text/css">

    <link rel="shortcut icon" href="../favicon.ico">


    <title>陳光劍的個(gè)人網(wǎng)站 - Jason Chen's Personal Website</title>

    <!-- jQuery 2.2.3 -->
    <script src="../public/plugins/jQuery/jquery-2.2.3.min.js"></script>

    <!-- Bootstrap 3.3.6 -->
    <script src="../public/bootstrap/js/bootstrap.min.js"></script>
    <!-- Bootstrap 3.3.6 -->
    <link rel="stylesheet" href="../public/bootstrap/css/bootstrap.min.css">

    <!-- BootstrapDialog -->
    <link href="../public/components/bootstrap3-dialog/bootstrap-dialog.min.css" rel="stylesheet" type="text/css"/>
    <script src="../public/components/bootstrap3-dialog/bootstrap-dialog.min.js"></script>


    <!-- React -->
    <script src="https://cdn.bootcss.com/react/15.4.2/react.min.js"></script>
    <script src="https://cdn.bootcss.com/react/15.4.2/react-dom.min.js"></script>
    <script src="https://cdn.bootcss.com/babel-standalone/6.22.1/babel.min.js"></script>

    <script type="text/babel" src="../public/js/sidebar.js"></script>
    <script type="text/babel" src="../public/js/header.js"></script>
    <script src="../public/js/jason.js"></script>

    <script>
        var _hmt = _hmt || [];
        (function() {
            var hm = document.createElement("script");
            hm.src = "https://#/hm.js?bb529e2f4fa35aeb3b07ca2e09b4ef7c";
            var s = document.getElementsByTagName("script")[0];
            s.parentNode.insertBefore(hm, s);
        })();
    </script>


</head>

<body>

<div id="header"></div>

<div id="content-wrapper">
    <div class="inner clearfix">
        <section id="main-content">

            <div id="helloWorld2"></div>

            <div style="padding: 2em; text-align: center;font-size: 2em"><a
                    href="http://www.reibang.com/p/3a9f916d930d" target="_blank">React極簡教程:Hello,World</a></div>

            <div id="helloWorld"></div>

        </section>
        <div id="sidebar"></div>
    </div>
</div>


<script type="text/javascript">
    function sayHelloWorld() {
        BootstrapDialog.show({
            title: 'React Demo',
            message: 'Hello,World! 現(xiàn)在時(shí)間是:' + new Date(),
            type: BootstrapDialog.TYPE_DEFAULT,
            closable: false,
            cssClass: 'dialog_mar',
            buttons: [{
                label: '確認(rèn)',
                cssClass: 'con_btn',
                action: function (dialogRef) {
                    dialogRef.close();
                    location.reload();
                }
            }, {
                label: '取消',
                action: function (dialogRef) {
                    dialogRef.close();
                }
            }]
        });

    }
</script>

<script type="text/babel">
    var HelloWorld = React.createClass({
        getInitialState: function () {
            return {};
        },
        sayHello: function () {
//            alert('Hello,World!');
            sayHelloWorld();


        },
        render: function () {

            var helloWorldStyle = {
                textAlign: 'center',
                padding: '4em'
            };

            var btnStyle = {
                padding: '1.5em',
                fontSize: '1.5em'
            };

            return (
                    <div style={helloWorldStyle}>
                        <button onClick={this.sayHello} style={btnStyle}>說: Hello,World!</button>
                    </div>
            );
        }
    });

    ReactDOM.render(<HelloWorld/>, document.getElementById('helloWorld'));

//    var helloWorld2=ReactDOM.render(<h1>Hello,World!</h1>, document.getElementById("helloWorld2"));

    var HelloWorld2 = React.createClass({
       render: function () {
           var helloWorld2Style={
               textAlign: 'center'
           };

           return (<h1 style={helloWorld2Style}>Hello,World!</h1>);
       }
    });

    ReactDOM.render(<HelloWorld2/>,document.getElementById("helloWorld2"));


</script>


</body>
</html>

React.render

ReactComponent render(
  ReactElement element,
  DOMElement container,
  [function callback]
)

渲染一個(gè) ReactElement 到 DOM 中技俐,放在 container 指定的 DOM 元素下,返回一個(gè)到該組件的引用统台。

如果 ReactElement 之前就被渲染到了 container 中雕擂,該函數(shù)將會(huì)更新此 ReactElement,僅改變需要改變的 DOM 節(jié)點(diǎn)以展示最新的 React 組件贱勃。

如果提供了可選的回調(diào)函數(shù)井赌,則該函數(shù)將會(huì)在組件渲染或者更新之后調(diào)用。

注意:

React.render() 替換傳入的容器節(jié)點(diǎn)內(nèi)容贵扰。在將來族展,或許可能插入組件到已存在的 DOM 節(jié)點(diǎn)中,但不覆蓋已有的子節(jié)點(diǎn)拔鹰。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市贵涵,隨后出現(xiàn)的幾起案子列肢,更是在濱河造成了極大的恐慌恰画,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,723評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件瓷马,死亡現(xiàn)場離奇詭異拴还,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)欧聘,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,485評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門片林,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人怀骤,你說我怎么就攤上這事费封。” “怎么了蒋伦?”我有些...
    開封第一講書人閱讀 152,998評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵弓摘,是天一觀的道長。 經(jīng)常有香客問我痕届,道長韧献,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,323評(píng)論 1 279
  • 正文 為了忘掉前任研叫,我火速辦了婚禮锤窑,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘嚷炉。我一直安慰自己渊啰,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,355評(píng)論 5 374
  • 文/花漫 我一把揭開白布渤昌。 她就那樣靜靜地躺著虽抄,像睡著了一般。 火紅的嫁衣襯著肌膚如雪独柑。 梳的紋絲不亂的頭發(fā)上迈窟,一...
    開封第一講書人閱讀 49,079評(píng)論 1 285
  • 那天,我揣著相機(jī)與錄音忌栅,去河邊找鬼车酣。 笑死,一個(gè)胖子當(dāng)著我的面吹牛索绪,可吹牛的內(nèi)容都是我干的湖员。 我是一名探鬼主播,決...
    沈念sama閱讀 38,389評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼瑞驱,長吁一口氣:“原來是場噩夢啊……” “哼娘摔!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起唤反,我...
    開封第一講書人閱讀 37,019評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤凳寺,失蹤者是張志新(化名)和其女友劉穎鸭津,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體肠缨,經(jīng)...
    沈念sama閱讀 43,519評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡逆趋,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,971評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了晒奕。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片闻书。...
    茶點(diǎn)故事閱讀 38,100評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖脑慧,靈堂內(nèi)的尸體忽然破棺而出魄眉,到底是詐尸還是另有隱情,我是刑警寧澤漾橙,帶...
    沈念sama閱讀 33,738評(píng)論 4 324
  • 正文 年R本政府宣布杆融,位于F島的核電站,受9級(jí)特大地震影響霜运,放射性物質(zhì)發(fā)生泄漏脾歇。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,293評(píng)論 3 307
  • 文/蒙蒙 一淘捡、第九天 我趴在偏房一處隱蔽的房頂上張望藕各。 院中可真熱鬧,春花似錦焦除、人聲如沸激况。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,289評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽乌逐。三九已至,卻和暖如春创葡,著一層夾襖步出監(jiān)牢的瞬間浙踢,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,517評(píng)論 1 262
  • 我被黑心中介騙來泰國打工灿渴, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留洛波,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,547評(píng)論 2 354
  • 正文 我出身青樓骚露,卻偏偏與公主長得像蹬挤,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子棘幸,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,834評(píng)論 2 345

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

  • HTML模版 之后出現(xiàn)的React代碼嵌套入模版中焰扳。 1. Hello world 這段代碼將一個(gè)一級(jí)標(biāo)題插入到指...
    ryanho84閱讀 6,221評(píng)論 0 9
  • 原教程內(nèi)容詳見精益 React 學(xué)習(xí)指南,這只是我在學(xué)習(xí)過程中的一些閱讀筆記,個(gè)人覺得該教程講解深入淺出蓝翰,比目前大...
    leonaxiong閱讀 2,810評(píng)論 1 18
  • 為了推進(jìn)學(xué)科教研組文化建設(shè)光绕,今天下午3:50,所有學(xué)科主任齊聚會(huì)議室畜份。 會(huì)議第一個(gè)發(fā)言者是《中國教師報(bào)》課堂周刊主...
    知北老師閱讀 402評(píng)論 0 1
  • 海上牧云記播了75集,看著這個(gè)數(shù)字感覺挺多的欣尼,追的時(shí)候反而沒什么感覺爆雹。整個(gè)故事基于一個(gè)架空的世界,以三個(gè)主人公為主...
    小小小小火閱讀 688評(píng)論 0 1
  • 你是否也曾有過這樣的疑問: 為什么他成績并沒有那么好,但他依然能夠很開心菇晃;而我身處前三卻也沒有那么多開心册倒?他的能力...
    阿輝_Abel閱讀 291評(píng)論 0 0