<!DOCTYPE html>
<html>
<head>
<title>react</title>
<meta charset="utf-8">
<style type="text/css">
*{
padding:0;
margin:0;
}
#con{
padding:50px;
background-color: #FFF;
}
.color{
box-shadow: 0px 0px 25px 0px #333;
width:242px;
height:242px;
margin-bottom:15px;
}
.colorArea input{
padding:10px;
font-size:16px;
border:2px solid #ccc;
}
.colorArea button{
padding:10px;
font-size:16px;
margin:10px;
background-color: #666;
color:#FFF;
border:2px solid #666;
}
.colorArea button:hover{
background-color: #111;
border-color: #111;
cursor: pointer;
}
</style>
<script src="https://cdn.bootcss.com/react/15.4.2/react.min.js"></script>
<script src="https://cdn.bootcss.com/react/15.4.2/react-dom.min.js"></script>
<script src="https://cdn.bootcss.com/babel-standalone/6.22.1/babel.min.js"></script>
</head>
<body>
<div id="con">
</div>
<script type="text/babel">
var desction = document.getElementById("con");
var Colorize = React.createClass({
getInitialState:function(){
return{
color:'',
baColor:''
}
},
colorValue:function(e){
this.setState({
color:e.target.value
})
},
setNewColor: function(e){
this.setState({
bgColor:this.state.color
});
this._input.value="";
this._input.focus();
e.preventDefault();
},
render:function(){
var squareStyle={
backgroundColor: this.state.bgColor
};
var self = this;
return (
<div className="colorArea">
<div style={squareStyle} className="color"></div>
<form onSubmit={this.setNewColor} >
<input
ref={function(el){
self._input = el;
}} placeholder="Please enter a color"
onChange={this.colorValue} />
<button type="submit">show</button>
</form>
</div>
)
}
})
ReactDOM.render(
<div>
<Colorize></Colorize>
</div>,
desction
)
</script>
</body>
</html>
亲,你可以先在你的编译器上跑跑上面的代码。
上面的代码主要实现的功能就是:根据文本框里面输入的颜色值来改变另外一个<div>里面的颜色,并且在每一次变颜色之后就会将文本框里面的内容清空。
有没有觉得很神奇呢!下来就让我给你们说说我了解到的react吧!
1.React.createClass()这个方法就是用来构造组件的
2.给组件添加样式就是在render里面写json类型的东西,最后利用style={
你写的json}这样的话,就可以给组件里面添加样式了。
3.
ReactDOM.render(
<div>
<Colorize></Colorize>
</div>,
desction
)
对于上面的这一段代码来说,<div>里面添加的就是你写好的组件,desction就是挂在组件的对象。这里需要注意的就是其中的在ReactDOM.render将你写好的组件放在一个<div>里面,其中的逗号是一定不能省略的。
4.
ref={function(el){
self._input = el;
}}
这一部分的代码通过其中的el来获取其中的js的对象,方便你的操作。
React提供的这个ref
属性,表示为对组件真正实例的引用,其实就是ReactDOM.render()返回的组件实例
;需要区分一下,ReactDOM.render()
渲染组件时返回的是组件实例;而渲染dom元素时,返回是具体的dom节点。
5.对于其中的this.state....这个是用来将父组件的东西传递给子组件的
6.this.setState这个是用来设置组件的属性的
7.getInitialState 对于这个和其他的不一样,这个是react里面自带的方法,这里是进行初始化的。一般情况下我们就是将那些初始化的东西写在这个里面
对于react最最重要的就是:当组件里面的内容发生改变的时候,react就会重新调用render函数来将组件重新构建的。
最后还要忠告的就是,在写react代码的时候,里面不能随便写注释,如果你把代码写完没有在浏览器上出现样式的话,最好检查一下你的标点符号。