zoukankan      html  css  js  c++  java
  • React入门

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

    官方文档:https://reactjs.org/docs/introducing-jsx.html

    JSX 的基本语法规则

    遇到HTML 标签(以 < 开头),就用 HTML 规则解析;遇到代码块(以 { 开头),就用 JavaScript 规则解析

     1 <!DOCTYPE html>
     2     <html>
     3       <head>
     4         <script src="../build/react.js"></script>
     5         <script src="../build/react-dom.js"></script>
     6         <script src="../build/browser.min.js"></script>
     7       </head>
     8       <body>
     9         <div id="example"></div>
    10         <script type="text/babel">
    11           var names = ['Alice', 'Emily', 'Kate'];
    12           ReactDOM.render(
    13            <div>
    14              {
    15                 names.map(function (name) {
    16                     return <div>Hello, {name}!</div>
    17                 })
    18               }
    19            </div>,//<div>{names }</div>,
    20           document.getElementById('example')
    21          );
    22         </script>
    23       </body>
    24     </html>

    React 组件

    React 允许将代码封装成组件(component),然后像插入普通 HTML 标签一样,在网页中插入这个组件。React.createClass 方法就用于生成一个组件类

     1     var HelloMessage = React.createClass({
     2       render: function() {
     3         return <h1>Hello {this.props.name}</h1>;
     4       }
     5     });
     6 
     7     ReactDOM.render(
     8       <HelloMessage name="John" />,
     9       document.getElementById('example')
    10     );

    组件的用法与原生的 HTML 标签完全一致,可以任意加入属性

    组件的属性可以接受任意值,字符串、对象、函数等等都可以

    组件的属性可以在组件类的 this.props 对象上获取,比如 name 属性就可以通过 this.props.name 读取;

    组件类的PropTypes属性,就是用来验证组件实例的属性是否符合要求

    1     var MyTitle = React.createClass({
    2       propTypes: {
    3         title: React.PropTypes.string.isRequired,
    4       },
    5 
    6       render: function() {
    7          return <h1> {this.props.title} </h1>;
    8        }
    9     });

    ref 属性:从组件获取真实 DOM 的节点

     1     var MyComponent = React.createClass({
     2       handleClick: function() {
     3         this.refs.myTextInput.focus();
     4       },
     5       render: function() {
     6         return (
     7           <div>
     8             <input type="text" ref="myTextInput" />
     9             <input type="button" value="Focus the text input" onClick={this.handleClick} />
    10           </div>
    11         );
    12       }
    13     });
    14 
    15     ReactDOM.render(
    16       <MyComponent />,
    17       document.getElementById('example')
    18     );
    View Code

    上面代码中,组件 MyComponent 的子节点有一个文本输入框,用于获取用户的输入。这时就必须获取真实的 DOM 节点,虚拟 DOM 是拿不到用户输入的。为了做到这一点,文本输入框必须有一个 ref 属性,然后 this.refs.[refName] 就会返回这个真实的 DOM 节点。

    需要注意的是,由于 this.refs.[refName] 属性获取的是真实 DOM ,所以必须等到虚拟 DOM 插入文档以后,才能使用这个属性,否则会报错。上面代码中,通过为组件指定 Click 事件的回调函数,确保了只有等到真实 DOM 发生 Click 事件之后,才会读取 this.refs.[refName] 属性。

    React 组件支持很多事件,除了 Click 事件以外,还有 KeyDownCopyScroll 等,完整的事件清单请查看官方文档

    注意:

    1、组件类的第一个字母必须大写;

    2、组件类只能包含一个顶层标签;

    3、添加组件属性, class 属性需要写成 classNamefor 属性需要写成 htmlFor ,这是因为 classfor 是 JavaScript 的保留字;

    4、this.props 对象的属性与组件的属性一一对应,但是有一个例外,就是 this.props.children 属性。它表示组件的所有子节点

    React 组件
    反应组件
  • 相关阅读:
    GridView的TemplateField
    数据源绑定
    hihocoder-1415 后缀数组三·重复旋律3 两个字符串的最长公共子串
    hihocoder-1407 后缀数组二·重复旋律2 不重合 最少重复K次
    hdu number number number 斐波那契数列 思维
    最长上升子序列 nlogn
    hdu-4507 吉哥系列故事——恨7不成妻 数位DP 状态转移分析/极限取模
    hdu-3652 B-number 数位DP
    hdu-2089 不要62 基础DP 模板
    字符串hash
  • 原文地址:https://www.cnblogs.com/anyun/p/8296884.html
Copyright © 2011-2022 走看看