容許用戶自由封裝組件是React很是突出的特性,用戶可將本身建立的組件像普通的HTML標籤同樣插入頁面,React.CreateClass
方法就是用來建立一個組件類的。在建立和調用react組件時有幾點須要注意,咱們在實際的demo中進行總結。
從一個簡單的例子開始,咱們嘗試建立一個包含文本框和提交按鈕的組件:html
<div id="container"></div> <script type="text/babel"> let InputWithButton = React.createClass({ render:function(){ return( <div> <input type="text" value="password"/> <button>Submit</button> </div> ) } }); ReactDOM.render( <InputWithButton/>, document.getElementById("container") ) </script>
運行上述代碼,顯示結果以下:
在上述代碼中,須要注意如下幾點:react
InputWithButton
的組件類,注意此處命名首字母必須大寫,自動生成InputWithButton
實例。<input>
和<button>
,代碼會報錯。<InputWithButton/>
,注意"/"不能丟,在jsx解析時會根據"/"判斷標籤的閉合。<div id="container"></div> <script type="text/babel"> let InputWithButton = React.createClass({ render:function(){ return( <div> <input type="text" value={this.props.value} className="input"/> <button>{this.props.name}</button> </div> ) } }); ReactDOM.render( <InputWithButton name="confirm" value="password"/>, document.getElementById("container") ) </script>
<InputWithButton/>
標籤時,添加的name和value屬性,在建立組件類時,能夠經過this.props對象是獲取組件的屬性,在input經過this.props.value給value賦值,在button中經過this.props.name賦值,注意都要包裹在{}內。<div id="container"></div> <script type="text/babel"> let FormList = React.createClass({ render:function(){ return( <form> { React.Children.map(this.props.children,function(child){ return <button>{child}</button>; }) } </form> ) } }); ReactDOM.render( <FormList> <span>Submit</span> <span>Clear</span> <span>Cancel</span> </FormList>, document.getElementById("container") ) </script>
如上代碼,咱們嘗試建立一個包含三個按鈕的form表單,在建立FormList組件類時,經過this.props.children
獲取FormList下的子元素,經過React.Children.map
遍歷節點。經過React專用的調試工具,咱們能夠查看FormList組件類的具體組成以下:
git
對於React的入門仍是比較容易的,但想深刻掌握還有些路要走,要儘快熟悉JSX的語法規則,主要參考阮一峯大神的react入門實例教程和官方文檔。github