<!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>