• React简单入门


    各位圆友,新年好!!!

    使用 React 的网页源码时,首先,最后一个 <script> 标签的 type 属性为 text/babel 。这是因为 React 独有的 JSX 语法,跟 JavaScript 不兼容。凡是使用 JSX 的地方,都要加上 type="text/babel" 。

    其次,上面代码一共用了三个库: react.js 、react-dom.js 和 Browser.js ,它们必须首先加载。其中,react.js 是 React 的核心库,react-dom.js 是提供与 DOM 相关的功能,Babel是一个广泛使用的转码器,可以将ES6代码转为ES5代码,实际上线的时候,应该将它放到服务器完成。

     1 <!DOCTYPE html>
     2 <html>
     3     <head>
     4         <meta charset="UTF-8">
     5         <title></title>
     6     </head>
     7     <body>
     8         <div id="app">
     9             
    10         </div>
    11         <script src="./js/react.js"></script>
    12         <script src="./js/react-dom.js"></script>
    13         <script src="./js/babel.min.js"></script>
    14         <script type="text/babel">
    15         /*
    16          * React 允许将代码封装成组件(component),然后像插入普通 HTML 标签一样,在网页中插入这个组件。
    17          * React.createClass 方法就用于生成一个组件类。
    18          * 注意,组件类的第一个字母必须大写,否则会报错
    19          * 件类只能包含一个顶层标签,否则也会报错。
    20          */
    21           var names = ['Alice', 'Emily', 'Kate'];
    22           ReactDOM.render(
    23             <div>
    24             {
    25               names.map(function (name, index) {
    26                 return <div key={index}>Hello, {name}!</div>
    27               })
    28             }
    29             </div>,
    30             document.getElementById('app')
    31             
    32           );
    33          
    34          /* var names = ['Alice', 'Emily', 'Kate'];
    35           ReactDOM.render(
    36             <div>
    37                    {names}
    38             </div>,
    39             document.getElementById('app')
    40             
    41           );*/
    42         </script>
    43     </body>
    44 </html>

    运行结果


     1 <!DOCTYPE html>
     2 <html>
     3     <head>
     4         <meta charset="UTF-8">
     5         <title></title>
     6     </head>
     7     <body>
     8         <div id="app">
     9             
    10         </div>
    11         <script src="./js/react.js"></script>
    12         <script src="./js/react-dom.js"></script>
    13         <script src="./js/babel.min.js"></script>
    14         <script type="text/babel">
    15         /*
    16          * 注意:添加组件属性,有一个地方需要注意,就是 class 属性需要写成 className ,for 属性需要写成 htmlFor 
    17          * 这是因为 class 和 for 是 JavaScript 的保留字。
    18          */
    19          var Mycomponent = React.createClass({
    20             render:function(){
    21                 return <div>
    22                     <h1 className="fontcolortest">2018新年好!!</h1>
    23                 </div>;
    24             }
    25         });
    26         
    27         ReactDOM.render(
    28             <Mycomponent/>,
    29             document.getElementById('app')
    30         );
    31         </script>
    32     </body>
    33 </html>

    运行结果


     1 <!DOCTYPE html>
     2 <html>
     3     <head>
     4         <meta charset="UTF-8">
     5         <title></title>
     6     </head>
     7     <body>
     8         <div id="app">
     9             
    10         </div>
    11         <script src="./js/react.js"></script>
    12         <script src="./js/react-dom.js"></script>
    13         <script src="./js/babel.min.js"></script>
    14         <script type="text/babel">
    15             /*
    16              * 组件的用法与原生的 HTML 标签完全一致,可以任意加入属性,比如 <HelloMessage name="John"> ,
    17              * 就是 HelloMessage 组件加入一个 name 属性,值为 John。
    18              * 组件的属性可以在组件类的 this.props 对象上获取,比如 name 属性就可以通过 this.props.name 读取。
    19              */
    20             
    21             var HelloMessage = React.createClass({
    22               render: function() {
    23                 return <h1>Hello {this.props.name}新年好!</h1>;
    24               }
    25             });
    26             
    27             ReactDOM.render(
    28               <HelloMessage name="2018" />,
    29               document.getElementById('app')
    30             );
    31         </script>
    32     </body>
    33 </html>

    运行结果


     1 <!DOCTYPE html>
     2 <html>
     3     <head>
     4         <meta charset="UTF-8">
     5         <title></title>
     6     </head>
     7     <body>
     8         <div id="app">
     9             
    10         </div>
    11         <script src="./js/react.js"></script>
    12         <script src="./js/react-dom.js"></script>
    13         <script src="./js/babel.min.js"></script>
    14         <script type="text/babel">
    15             /*
    16              * this.props 对象的属性与组件的属性一一对应。除了this.props.children 属性。它表示组件的所有子节点
    17              * 下面代码的 NoteList 组件有两个 span 子节点,它们都可以通过 this.props.children 读取
    18              * 注意, this.props.children 的值有三种可能:
    19              *         如果当前组件没有子节点,它就是 undefined ;
    20              *         如果有一个子节点,数据类型是 object ;
    21              *         如果有多个子节点,数据类型就是 array 。
    22              * 所以,处理 this.props.children 的时候要小心。
    23              * 
    24              * React 提供一个工具方法 React.Children 来处理 this.props.children 。
    25              * 我们可以用 React.Children.map 来遍历子节点,而不用担心 this.props.children 的数据类型是 undefined 还是 object。
    26              * */
    27             var NotesList = React.createClass({
    28                 render: function() {
    29                   return (
    30                     <ol>
    31                       {
    32                         React.Children.map(this.props.children, function (child) {
    33                           return <li>{child}</li>;
    34                         })
    35                       }
    36                     </ol>
    37                   );
    38                 }
    39               });
    40               ReactDOM.render(
    41                 <NotesList>
    42                   <span>祝各位2018新年好!</span>
    43                   <span>身体健康</span>
    44                   <span>工作顺利</span>
    45                   <span>阖家幸福</span>
    46                 </NotesList>,
    47                 document.getElementById('app')
    48               );
    49         </script>
    50     </body>
    51 </html>

    运行结果

  • 相关阅读:
    给部署在openshift上的WordPress添加wptouch插件
    让你的代码符合PEP8标准——sublime text 2 安装及使用 Python Flake8 Lint 插件
    Pylot——跨平台的网站压力测试工具
    window.print打印指定div
    window.parent与window.opener的区别 转
    获取Windows Mobile开发工具
    event.srcElement
    GridView的各种用法
    JS 中document详解
    llog
  • 原文地址:https://www.cnblogs.com/sunduge/p/8177675.html
Copyright © 2020-2023  润新知