zoukankan      html  css  js  c++  java
  • React入门(1)

    1.html模版

    引入react.js,react-dom.js,browser.min.js

    注意:script标签的type属性为text/babel(因为react独有的jsx语法,和js不兼容;使用jsx语法的地方都要加type=“text/babel”)。

    react.js:react核心库

    react-dom.js :提供与dom相关的功能

    browser.js :将jsx语法转为js语法,最好放在服务器。

    $babel src --out-dir build

    将src下的js进行语法转换,转码后放在build子目录中。

    2.ReactDOM.render(),用于将模版转化为html,并插入到制定节点的DOM 中。

    ReactDOM.render(<h1>hello</h1>);

    document.getElementById('example');

    将h1标题插入example节点

    3. JSX语法

    html直接写在js中,不需要加任何符号----jsx语法。

    var name = ['aa','bb','cc'];

    ReactDOM.render(

      <div>

        {

          names.map(function(name){

            return <div>hello ,{name}</div>

          });

        }

      </div>,

    );

     遇见html以中<开头,代码块以{开头。

    jsx允许在模版插入js变量。

    4.组件

    react允许将代码封装成组件,然后在网页中插入组件。

    生成组件类的方法:React.createClass.

    var HelloMessage = React.createClass({

      render:function(){

        return <h1>hello {this.props.name}</h1>;

      }

    });

    ReactDOM.render(

      <HelloMessage name="lily"/>

      document.getElementById('example');

    );

    注意:1.所有组件类必须有render方法,用于输出组件,组件类第一个字母必须大写。

    组件类指南包含一个顶层标签。

    2.class属性需要写成className,for属性需要写成htmlFor ,因为class和for是JavaScript保留字。

    5.this.props.children

    this.props对象的属性和组件属性一一对应,除了this.props.children属性。

    它表示组件的所有子节点。

     this.props.children 的值有三种可能:

    (1)当前组件没有子节点,它就是undefined。

    (2)有一个子节点,数据类型object。

    (3)有多个子节点,数据类型 array。

    React提供了一个工具方法React.Children来处理this.props.children,可以使用React.Children.map来遍历子节点。

    var NotesList = React.createClass({
      render: function() {
        return (
          <ol>
          {
            React.Children.map(this.props.children, function (child) {
              return <li>{child}</li>;
            })
          }
          </ol>
        );
      }
    });
    
    ReactDOM.render(
      <NotesList>
        <span>hello</span>
        <span>world</span>
      </NotesList>,
      document.body
    );

    6.PropTypes

    组件类的PropTypes属性,用来验证组件市里的属性是否符合要求

    var MyTitle = React.createClass({
      propTypes: {
        title: React.PropTypes.string.isRequired,
      },
    
      render: function() {
         return <h1> {this.props.title} </h1>;
       }
    });
    

     

    var data = 'string';
    
    ReactDOM.render(
      <MyTitle title={data} />,
      document.body
    );
    

      更多的PropTypes设置,可以查看官方文档

    getDefaultProps 方法可以用来设置组件属性的默认值。

     

    var MyTitle = React.createClass({
      getDefaultProps : function () {
        return {
          title : 'Hello World'
        };
      },
    
      render: function() {
         return <h1> {this.props.title} </h1>;
       }
    });
    
    ReactDOM.render(
      <MyTitle />,
      document.body
    );
    

    7.获取真实DOM节点

    组件不是真正的DOM,react的操作通常是在虚拟的节点上,只有插入文档后才变成真正的DOM了,极大的提高了网页性能。

    那么,如果从组件中获取真正的DOM节点,需要使用ref属性。

    var MyComponent = React.createClass({
      handleClick: function() {
        this.refs.myTextInput.focus();
      },
      render: function() {
        return (
          <div>
            <input type="text" ref="myTextInput" />
            <input type="button" value="Focus the text input" onClick={this.handleClick} />
          </div>
        );
      }
    });
    
    ReactDOM.render(
      <MyComponent />,
      document.getElementById('example')
    );
    

      

  • 相关阅读:
    OpenStack 多节点纳管 vCenter 5.5
    OpenStack 多节点纳管 vCenter 5.5
    java.utils.UUID类介绍
    BeanUtils工具类
    Request笔记
    JavaEE_XMind总结
    JavaSE_XMind总结
    完成页面的定时跳转
    使用jsp完成商品列表的动态显示
    Respone笔记
  • 原文地址:https://www.cnblogs.com/zshh/p/6040626.html
Copyright © 2011-2022 走看看