React入門

http://www.ruanyifeng.com/blog/2015/03/react.htmljavascript

 
ReactDOM.render 是React的最基本的方法,用於將模板轉爲HTML語言,並插入制定的DOM節點中。
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <scriptsrc="../build/react.js"></script>
  5. <scriptsrc="../build/react-dom.js"></script>
  6. <scriptsrc="../build/browser.min.js"></script>
  7. </head>
  8. <body>
  9. <divid="example"></div>
  10. <scripttype="text/babel"><!--React獨有的JSX語法,須要的type 爲text/babel 凡是使用JSX語法的 type都是這個-->
  11. ReactDOM.render(
  12. <h1>Hello, world!</h1>,
  13. document.getElementById('example')
  14. );
  15. </script>
  16. </body>
  17. </html>
 
JSX語法,html語言直接寫在 javascript代碼中, 不加任何引號,支持html和js的混寫,
遇到html標籤(以   <  開頭),就以html解析,遇到代碼塊 (以 {  開頭 ) 則以JavaScript 規格解析;
  1. <script type="text/babel">
  2. var names =['Alice','Emily','Kate'];
  3. ReactDOM.render(
  4. <div>
  5. {
  6. names.map(function(name){
  7. return<div>Hello,{name}!</div>
  8. })
  9. }
  10. </div>,
  11. document.getElementById('example')
  12. );
  13. </script>
 
JSX語法容許直接在模板插入 javascript變量,若是這個變量是數組,則會展開這個數組的所有成員;
  1. <script type="text/babel">
  2. var arr =[
  3. <h1>Hello world!</h1>,
  4. <h2>React is awesome</h2>,
  5. ];
  6. ReactDOM.render(
  7. <div>{arr}</div>,
  8. document.getElementById('example')
  9. );
  10. </script>
 
 
 
組件 
React容許將代碼封裝成組件(component) ,而後像插入普通HTML標籤同樣,在網頁中插入這個組件。
React.createClass 方法就是用來生成這個組件類的;
 
  1. <script type="text/babel">
  2. varHelloMessage=React.createClass({
  3. render:function(){
  4. return<h1>Hello{this.props.name}</h1>;
  5. }
  6. });
  7. ReactDOM.render(
  8. <HelloMessage name="John"/>,
  9. document.getElementById('example')
  10. );
  11. </script>
上面代碼中,變量 HelloMessage 就是一個組件類, 模板插入 <HelloMessage />變回自動建立一個這樣的實例,
全部組件類都有本身的render方法,用於輸出組件;
組件的第一個字母必須大寫,不然會報錯,另外 組件類只能保安一個頂層標籤(只能有一個頂層標籤,而後包含不少子標籤) ,不然也會報錯。
 
組件的用法和原生HTML標籤徹底一致,能夠任意的加入屬性,好比 name屬性,組件的屬性能夠在組件類的this.props 對象上獲取, 可是  class 屬性和for屬性 在組件屬性中,名稱分別改成了  className  htmlFor  由於 class 和for是javascript 的保留字。
 
 
this.props.children 
this,props 對象的屬性與組件一一對應 可是有一個例外 就是 this.props.children 屬性,它表示組件的全部子節點 
  1. <script type="text/babel">
  2. varNotesList=React.createClass({
  3. render:function(){
  4. return(
  5. <ol>
  6. {
  7. React.Children.map(this.props.children,function(child){
  8. return<li>{child}</li>;
  9. })
  10. }
  11. </ol>
  12. );
  13. }
  14. });
  15. ReactDOM.render(
  16. <NotesList>
  17. <span>hello</span>
  18. <span>world</span>
  19. </NotesList>,
  20. document.getElementById('example')
  21. );
  22. </script>
this.props.children 的值有三種可能,若是當前組件沒有子節點,他就是 undefind ,若是有一個子節點,數據類型是object 若是有多個子節點  那麼它就是 array 。。。
 
React 提供了一個工具方法, React.Children 來處理 this.props.children 咱們能夠用 React.Children.map來遍歷子節點 
不用擔憂 this.props.children 的數據類型了~
相關文章
相關標籤/搜索