React学习练习

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="build/react.js"></script>
    <script src="build/react-dom.js"></script>
    <script src="build/browser.min.js"></script>

</head>
<body>
<div id="example">

</div>
</body>
<script type="text/babel">
   /* var Mystyle ={
        color:'#ddd'
    };
    ReactDOM.render(
        <div>
        <h1 style={Mystyle}>这是学习的第一个小例子</h1>
           <h2>{3+5}</h2>
        </div>
        ,
        document.getElementById("example")
    );*/
   /*react实例,输出js,输出样式*/
  /* var arr =[
       <h1>JSX允许在模版中插入数组</h1>,
       <h2>所以这是数组练习</h2>
   ]
   ReactDOM.render(
       <div>{arr}</div>,
       document.getElementById("example")
   )*/
   /*react输出数组,在组件中使用props*/
 /* var HelloMessage = React.createClass({
      render:function () {
          return <h1>这是自己封装的一个组件输出Hello World!{this.props.name}</h1>;
      }
  });
  ReactDOM.render(
      <HelloMessage name="像组件传递参数,使用this.props属性,添加name"/>,
      document.getElementById("example")
  );*/
 /*react组件以及向组件传递参数*/

    /*复合组件*/
/*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>
        );
    }
});

ReactDOM.render(
    <Website name="百度" site=" http://www.baidu.com" />,
    document.getElementById("example")
);
*/


/*state状态*/
   /* var LinkButton = 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>
            );
        }
    });

    ReactDOM.render(
        <LinkButton/>,
        document.getElementById("example")
    );*/


/* getDefaultProps() 方法为 props 设置默认值*/
   /*var HelloMessage = React.createClass({
       getDefaultProps: function() {
           return {
               name: 'xiaoxiao'
           };
       },
       render: function() {
           return <h1>Hello {this.props.name}</h1>;
       }
   });

   ReactDOM.render(
       <HelloMessage />,
       document.getElementById('example')
   );*/
/*state与props一起使用*/
   /*var WebSite = React.createClass({
       getInitialState: function() {
           return {
               name: "百度" ,
               site: " http://www.baidu.com"
           };
       },

       render: function() {
           return (
               <div>
                   <Name name={this.state.name} />
                   <Link site={this.state.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>
           );
       }
   });

   ReactDOM.render(
       <WebSite />,
       document.getElementById('example')
   );*/

   /*props验证*/
   //var title = "这是练习";
   /* var title = 123;
   var MyTitle = React.createClass({
       propTypes: {
           title: React.PropTypes.string.isRequired,
       },

       render: function() {
           return <h1> {this.props.title} </h1>;
       }
   });
   ReactDOM.render(
       <MyTitle title={title} />,
       document.getElementById('example')
   );*/

   /*生命周期*/
    /*var Hello = React.createClass({
        getInitialState:function () {
            return{
                opacity:1.0
            };
        },
        componentDidMount:function () {
            this.timer = setInterval(function () {
                var opacity = this.state.opacity;
                opacity -= .05;
                if (opacity < 0.1) {
                    opacity = 1.0;
                }
                this.setState({
                    opacity: opacity
                });
            }.bind(this), 100);
        },
        render:function () {
            return(
                <div style={{opacity: this.state.opacity}}>
                    Hello {this.props.name}
                </div>
            );
        }
    });

   ReactDOM.render(
       <Hello name="world"/>,
       document.body
   );*/


   /* var Button = React.createClass({
        getInitialState:function () {
            return{
                data:0
            };
        },
        setNewNumber:function () {
            this.setState({data: this.state.data + 1})
        },
        render:function () {
            return(
                <div>
                    <button onClick={this.setNewNumber}>INCREMENT</button>
                    <Content myNumber = {this.state.data}></Content>
                </div>
            );
        }
    })
    var Content = React.createClass({
        componentWillMount:function () {
            console.log("Component WILL MOUNT!")
        },
        componentDidMount:function () {
            console.log("Component DID MOUNT!")
        },
        componentWillReceiveProps:function(newProps) {
            console.log('Component WILL RECEIVE PROPS!')
        },
        shouldComponentUpdate:function(newProps, newState) {
            return true;
        },
        componentWillUpdate:function(nextProps, nextState) {
            console.log('Component WILL UPDATE!');
        },
        componentDidUpdate:function(prevProps, prevState) {
            console.log('Component DID UPDATE!')
        },
        componentWillUnmount:function() {
            console.log('Component WILL UNMOUNT!')
        },
        render: function () {
            return (
                <div>
                    <h3>{this.props.myNumber}</h3>
                </div>
            );
        }
    });
   ReactDOM.render(

       <div>
           <Button />
       </div>,
       document.getElementById('example')
   );
    */

/*表单*/
   var HelloMessage = React.createClass({
       getInitialState: function() {
           return {value: ''};
       },
       handleChange: function(event) {
           this.setState({value: event.target.value});
       },
       render: function() {
           var value = this.state.value;
           return <div>
               <input type="text" value={value} onChange={this.handleChange} />
               <h4>{value}</h4>
           </div>;
       }
   });
   ReactDOM.render(
       <HelloMessage />,
       document.getElementById('example')
   );
/*事件*/
   var HelloMessage = React.createClass({
       getInitialState:function () {
           return{value:"hello"};
       },
       handleChange:function (event) {
           this.setState({value:"你好"})
       },
       render:function () {
           var value = this.state.value;
           return <div>
               <button onClick={this.handleChange}>点我</button>
               <h2>{value}</h2>
           </div>;
       }
   });
   ReactDOM.render(
       <HelloMessage/>,
       document.getElementById("example")
   );

/*ref*/
   /*var MyComponent = React.createClass({
       handleClick: function() {
           // 使用原生的 DOM API 获取焦点
           this.refs.myInput.focus();
       },
       render: function() {
           //  当组件插入到 DOM 后,ref 属性添加一个组件的引用于到 this.refs
           return (
               <div>
                   <input type="text" ref="myInput" />
                   <input
                       type="button"
                       value="点我输入框获取焦点"
                       onClick={this.handleClick}
                   />
               </div>
           );
       }
   });

   ReactDOM.render(
       <MyComponent />,
       document.getElementById('example')
   );*/
</script>
</html>

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值