1. 程式人生 > >React入門

React入門

array 多個 dom john 包含 min 生成 實例 解析

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

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 的數據類型了~

React入門