React中的props

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title></title>
    <!--react.js是React的核心库-->
    <script src="./build/react.js" charset="utf-8"></script>
    <!--react-dom.js的作用是提供与DOM相关的功能-->
    <script src="./build/react-dom.js" charset="utf-8"></script>
    <!--browser.min.js的作用是JSX语法转换成JavaScript语法-->
    <script src="./build/browser.min.js" charset="utf-8"></script>
  </head>
  <body>
    <!--React渲染的模板内容会插入到这个DOM节点中,也可以理解为一个容器-->
    <div id="container">

    </div>
  </body>
  <!--在React开发中,使用JSX,跟JavaScript不兼容,所以在使用JSX的地方需要设置type="text/babel"-->
  <!--babel是一个转换编译器,可以将ES6转成可以在浏览器中运行的代码-->
  <script type="text/babel">

  //在此处编写React代码

    /**
    props、state
    props:是组件自身的属性,一般用于嵌套的内外层组件中,负责传递信息(通常是由父层组件向子层组件传递)
    注意:props对象中的属性与组件的属性一一对应,不要去直接去修改props中属性的值
  **/

  /**
    需求:定义一个组件WebShow.功能:输出网站的名字和网址,网址是一个可以点击的链接
    分析:定义一个组件WebName负责输出网站名字,定义组件WebLink显示网站的网址,并可以点击

    思路:
    1、给WebShow设置两个属性,wname,wlink
    2、WebShow的props对象增加了两个属性值
    3、WebName从WebShow的props对象中获取wname的值,即网站的名称.
  **/
  //
  // //定义WebName
  // var WebName=React.createClass({
  //   render:function(){
  //     return <h1>{this.props.webname}</h1>;
  //   }
  // });
  //
  // //定义WebLink
  // var WebLink=React.createClass({
  //   render:function(){
  //     return <a href={this.props.weblink}>{this.props.weblink}</a>;
  //   }
  // });
  //
  // //定义WebShow
  // var WebShow =React.createClass({
  //   render:function(){
  //     return(
  //       <div>
  //         <WebName webname={this.props.wname}/>
  //         <WebLink weblink={this.props.wlink}/>
  //       </div>
  //     );
  //   }
  // });
  //
  // //渲染
  // ReactDOM.render(
  //   <WebShow wname="蓝鸥科技" wlink="http://www.hao123.com"/>,
  //   document.getElementById("container")
  // );

  /**
    ...this.props
    props提供的语法糖,可以将父组件中的全部属性都复制给子组件

    需求:定义一个组件Link,Link组件中只包含一个<a>,我们不给<a>设置任何属性,所有的属性全部从父组件复制得到
  **/

  // var Link=React.createClass(
  //   {
  //     render:function(){
  //       return <a {...this.props}>{this.props.name}</a>
  //     }
  //   }
  // );
  //
  // ReactDOM.render(
  //   <Link href="http://www.hao123.com" name="蓝鸥科技"/>,
  //   document.getElementById("container");
  // );

  /**
    this.props.children
    children是一个例外,它不像props一样跟组件的属性一一对应,
    表示组件的所有子节点

    Html5中有一种标签:列表 <ul><ol><li>
    定义一个列表组件,列表项中显示的内容,以及列表项的数量都由外部决定
  **/

  // var ListComponent =React.createClass({
  //   render:function(){
  //     return (
  //       <ul>
  //         {
  //           /**
  //             列表项的数量以及内容不确定,在创建模板时才能确定
  //             利用this.props.children从父组件获取需要展示的列表项内容
  //
  //             获取到列表项内容后,需要去遍历children,逐项进行设置
  //             使用React.Children.map方法
  //             这个方法有返回值:数组对象。这里数组中的元素是<li>
  //           **/
  //           React.Children.map(this.props.children,function(child){
  //             //child是遍历得到的父组件的子节点
  //             return <li>{child}</li>
  //           })
  //         }
  //       </ul>
  //     );
  //   }
  // });
  //
  // ReactDOM.render(
  //   (
  //     <ListComponent>
  //     <h1>蓝鸥科技</h1>
  //     <a href="http://www.baidu.com">http://www.baidu.com</a>
  //     </ListComponent>
  //   ),
  //   document.getElementById("container")
  // );

  /**
    属性验证 propTypes
    组件类的属性
    用于验证组件实例的属性是否符合要求
  **/

  // var ShowTitle =React.createClass({
  //   propTypes:{
  //     //title数据类型必须为字符串
  //     title:React.PropTypes.string.isRequired
  //   },
  //   render:function(){
  //     return <h1>{this.props.title}</h1>
  //   }
  // });
  //
  // ReactDOM.render(
  //     <ShowTitle title="123"/>,
  //   document.getElementById("container")
  // );

  /**
    设置组件属性的默认值

    通过实现组件的getDefaultProps方法,对属性设置默认值
  **/
  var MyTitle=React.createClass({
    getDefaultProps:function(){
      return {
      title:"蓝鸥"
      };
    },
    render:function(){
      return <h1>{this.props.title}</h1>
    }
  });
  ReactDOM.render(
    <MyTitle />,
    document.getElementById("container")
  );
  </script>
</html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值