如果我们需要向组件传递参数,可以使用 this.props 对象,实例如下:

  <body>
    <div id="example"></div>
    <script type="text/babel">
      var HelloMessage = React.createClass({
        render: function() {
          return <h1>Hello {this.props.name}</h1>;
        }
      });

    ReactDOM.render(
      <HelloMessage name="柠檬先生" />,
      document.getElementById('example')
    );
   </script>
  </body>
  注意,在添加属性时, class 属性需要写成 className ,for 属性需要写成 htmlFor ,这是因为 class 和 for 是 JavaScript 的保留字。

如果我们需要向组件传递参数,可以使用 this.props 对象,实例如下:
  <body>
    <div id="example"></div>
    <script type="text/babel">
      var WebSite = React.createClass({
          render: function() {
            return (
              <div>
                <Name name={this.props.name} />
                <Link site={this.props.site} />
              </div>
            );
        }
      });

      var Name = React.createClass({
            render: function() {
              return (
                <h1>{this.props.name}</h1>
               );
            }
      });

     var Link = React.createClass({
          render: function() {
            return (
              <a href={this.props.site}>
                {this.props.site}
              </a>
            );
        }
    });

    React.render(
      <WebSite name="柠檬先生" site=" http://www.baidu.com" />,
      document.getElementById('example')
    );
   </script>
  </body>

React State(状态)

  React 把组件看成是一个状态机(State Machines)。通过与用户的交互,实现不同状态,然后渲染 UI,让用户界面和数据保持一致。
  React 里,只需更新组件的 state,然后根据新的 state 重新渲染用户界面(不要操作 DOM)。
  以下实例中创建了 LikeButton 组件,getInitialState 方法用于定义初始状态,也就是一个对象,这个对象可以通过 this.state 属性读取。
  当用户点击组件,导致状态变化,this.setState 方法就修改状态值,每次修改以后,自动调用 this.render 方法,再次渲染组件。

    <body>
      <div id="example"></div>
      <script type="text/babel">
          var LikeButton = React.createClass({
            getInitialState: function() {
              return {liked: false};
          },
          handleClick: function(event) {
            this.setState({liked: !this.state.liked});
          },
          render: function() {
            var text = this.state.liked ? '喜欢' : '不喜欢';
            return (
                <p onClick={this.handleClick}>
                  你<b>{text}</b>我。点我切换状态。
                </p>
              );
          }
        });

        React.render(
          <LikeButton />,
          document.getElementById('example')
        );
      </script>
    </body>

React Props

  使用 Props
      <body>
        <div id="example"></div>
        <script type="text/babel">
            var HelloMessage = React.createClass({
                render: function() {
                  return <h1>Hello {this.props.name}</h1>;
                }
            });

            ReactDOM.render(
                <HelloMessage name="柠檬先生" />,
              document.getElementById('example')
          );
      </script>
     </body>

默认 Props
    你可以通过 getDefaultProps() 方法为 props 设置默认值,实例如下:

    <body>
      <div id="example"></div>
      <script type="text/babel">
        var HelloMessage = React.createClass({
            getDefaultProps: function() {
              return {
                  name: '柠檬先生'
                };
            },
            render: function() {
                  return <h1>Hello {this.props.name}</h1>;
            }
        });

        ReactDOM.render(
          <HelloMessage />,
          document.getElementById('example')
        );
    </script>
  </body>

Reactjs 入门基础(二)的更多相关文章

  1. ReactJS入门学习二

    ReactJS入门学习二 阅读目录 React的背景和基本原理 理解React.render() 什么是JSX? 为什么要使用JSX? JSX的语法 如何在JSX中如何使用事件 如何在JSX中如何使用 ...

  2. mybatis入门基础(二)----原始dao的开发和mapper代理开发

    承接上一篇 mybatis入门基础(一) 看过上一篇的朋友,肯定可以看出,里面的MybatisService中存在大量的重复代码,看起来不是很清楚,但第一次那样写,是为了解mybatis的执行步骤,先 ...

  3. ReactJS入门基础

    渲染这俩字可能在很多地方都见过.但可能不太理解是啥意思. 那么首先我们来理解一下渲染. 渲染 我觉得这样理解比较通俗. 我们做一个汽车,开始是没有喷漆的(没有css) 只是些框框架架(HTML标签). ...

  4. ReactJS入门(二)—— 组件的生命周期

    如果你熟悉avalon,使用过 data-include-rendered 和 data-include-loaded 等回调方法,那么你会很好地理解React组件的各个生命周期. 说白了其实就是Re ...

  5. C#入门基础二

    万物皆对象:对象是包含数据和操作的实体. 属性:名词     /  对象     \      方法:动词 ============================================== ...

  6. Objective-C 快速入门--基础(二)

    1.什么是继承?OC中的继承有哪些特点? “继承”是面向对象软件技术当中的一个概念.如果一个类A继承自另一个类B,就把这个A称为"B的子类",而把B称为"A的父类&quo ...

  7. Linux入门基础二

    1.查看用户 who参数          说明 -a      打印能打印的全部 -d      打印死掉的进程 -m    同am i,mom likes -q      打印当前登录用户数及用户 ...

  8. Reactjs 入门基础(三)

    State 和 Props以下实例演示了如何在应用中组合使用 state 和 props .我们可以在父组件中设置 state, 并通过在子组件上使用 props 将其传递到子组件上.在 render ...

  9. Reactjs 入门基础(一)

    实例中我们引入了三个库: react.min.js .react-dom.min.js 和 browser.min.js: 1,react.min.js -React 的 核心库 2,react-do ...

随机推荐

  1. MAC上python+Eclipse+pydev环境搭建

    转自:http://www.cnblogs.com/Bonker/p/3584707.html 本文重点介绍使用Eclipse+pydev插件来写Python代码,  以及在Mac上配置Eclipse ...

  2. H5实现俄罗斯方块(四)

    图片加载的js: (function (window) { 'use strict'; //定义缓存的Map对象 var cacheMap = new Map(); //资源的总数量 var reso ...

  3. 公测后,微信小程序应用可能被拒原因.

    p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 34.0px "PingFang SC Semibold"; color: #23232 ...

  4. Golang Clearing slice

    //first method : slice = nil // second method : slice = slice[0:0] Source page : https://www.socketl ...

  5. 一种Go使用tcp检测超时的方式

    c.SetReadDeadline(time.Now()) if _, err := c.Read(one); err == io.EOF { l.Printf(logger.LevelDebug, ...

  6. 学习笔记:The Log(我所读过的最好的一篇分布式技术文章)

    前言 这是一篇学习笔记. 学习的材料来自Jay Kreps的一篇讲Log的博文. 原文很长,但是我坚持看完了,收获颇多,也深深为Jay哥的技术能力.架构能力和对于分布式系统的理解之深刻所折服.同时也因 ...

  7. mysql -workbench : Error cause by ' sql-mode = only-full-group-by'

    当mysql出现"only-full-group-by"问题时,是mysql的sql_mode设置出现了问题. 解决: 1.  找到mysql的 my.cnf文件,我的文件路径是: ...

  8. c#防止多次运行代码收集

    1.原文:经过我的测试,还比较好用,但是有个问题,如果不注销,用另一个用户进入,则程序不能判断出已运行.所以只限于用在单用户环境,还是不太完美. class Program { [STAThread] ...

  9. Android Service初始

    一.Service概念 1.Service是一个应用程序组件 2.Service没有图像化界面 3.Service通常用来处理一些耗时比较长的操作 4.可以使用Service更新ContentProv ...

  10. JavaScript 字符串转日期

    一.将字符串装换为日期 var date= new Date(Date.parse(strTime.replace(/-/g,   "/"))); //转换成Data();