react學習--1

首先萬事皆有源,react的github地址附上:https://github.com/facebook/react
其次,推薦個寫的不錯的react學習博客http://www.ruanyifeng.com/blog/2015/03/react.html
看完這些之後。可以再來看本人學習的過程,本人也是在看了上面的博客然後結合官網的例子,繼續學習的。

推薦幾個react必備網址:


接下來正式繼續學習…

本DEMO實例主要熟悉下react的生命週期
主要的生命週期可以參考https://segmentfault.com/a/1190000004168886
首先是本教程demo中所有的html頁面,都是一樣的代碼,如下:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8">
    <script src="../build/react.js"></script>
    <script src="../build/react-dom.js"></script>
    <script src="../build/browser.min.js"></script>
    <script src="index.js" type="text/babel"></script>
  </head>
  <body>
    <div id="example"></div>
  </body>
</html>

js代碼如下:

var count =0;
var HeloChild = React.createClass({
    //先申明 才能使用
    render : function(){
        //屬性改變調用render
        return(<a>{this.props.childProps}</a>);
    }
});

var HelloMessage = React.createClass({
    getDefaultProps :function(){
        console.log("getDefaultProps");
        //在create的時候就創建如果後面有直接賦值的屬性就會覆蓋此處
        //所有實例共用此屬性
        return {title : 'Hello World tqy'};
    },
    getInitialState : function(){
        //每個實例調用一次
        count++;
        console.log("getInitialState");
        console.log(count);
        return {mystate:"mystate",
            childProps:"childProps"
        };
    },
    render: function() {
        //狀態改變調用render
        return (<div><h1 onClick={this.callback}>Hello {this.props.name+this.props.title }{ this.state.mystate+"\n"}</h1>
                <HeloChild childProps={this.state.childProps}></HeloChild>
            </div>
        );
    },
    //函數的兩種寫法
    componentDidMount(){
        console.log("componentDidMount");
    },
    callback : function(event){
        console.log("click");
        this.setState({mystate: "mystateCCCCCCC",childProps:"childProps22"});
    }

});
ReactDOM.render(
    //組件&組件之間不能嵌套
    <div><HelloMessage name="aaa" title="bbbb"/><HelloMessage></HelloMessage></div>,
    document.getElementById('example')
);

在瀏覽器中訪問控制檯結果如下:
控制檯結果1
可以看到,getDefaultProps方法只會調用一次,並且是在createclass的時候就調用;而getInitialState方法會在每個實例創建的時候,都調用一次。componentDidMount方法也打印了兩次。
詳細頁面如下:
詳細頁面
其餘生命週期的方法,也都大同小異,大家可以自行實踐。
如果最後的方法變成:

ReactDOM.render(
    //組件組件之間不能嵌套
    <div><HelloMessage><HelloMessage name="aaa" title="bbbb"/></HelloMessage></div>,
    document.getElementById('example')
);

則效果如下
錯誤效果1
可見,嵌套的只顯示最外層的HelloMessage。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章