![](http://image.beekka.com/blog/2015/bg2015033101.png)
<html>
<head>
<meta charset="utf-8">
<title>React</title>
</head>
<body>
<div id="div_one"></div>
</body>
</html>
<script src="react.min.js"></script>
<script src="react-dom.min.js"></script>
<script src="browser.min.js"></script>
<script type="text/babel">
type="text/babel"
2.ReactDOM.render();
该方法为React最基本的方法,用于将模板转为HTML语言,并显示在指定位置;
例:
ReactDOM.render(
<h1>React</h1>,
document.getElementById('div_one')
);
<
开头),就用 HTML 规则解析;遇到代码块(以 {
开头),就用 JavaScript 规则解析。
<h1>{1+1}</h1>,
document.getElementById('div_one')
);
fontSize:30,
color:'red'
};
<h1 style={myStyle}>hello,world</h1>,
document.getElementById('div_one')
);
<h1 style={myStyle}>hello,world</h1>,
document.getElementById('div_one')
);
HTML和React组件的区别:
要渲染 HTML 标签,只需在 JSX 里使用小写字母的标签名。
要渲染 React 组件,只需创建一个大写字母开头的本地变量。
var reactMsg = <h1>hello,world</h1>; 开头为小写字母,所以为HTML;
var ReactMsg = React.createClass({....}); 开头大写字母,所以为React组件;
var HelloWorldMsg = React.createClass({
render: function(){
var i = 1;
return (
<div>
{/*注释要写在花括号里*/}
<Name name={this.props.name}/>
<Title title={this.props.title}/>
<h1>{i=1?'true':'false'}</h1>
<h1>{1+1}</h1>
</div>
);
}
});
var Name = React.createClass({
render: function(){
return <h1 style={myStyle}>{this.props.name}</h1>;
}
});
var Title = React.createClass({
render: function(){
return <h1 style={myStyle}>{this.props.title}</h1>;
}
});
ReactDOM.render(
<HelloWorldMsg name="tom" title="like to study React"/>,
document.getElementById('div_one')
);
React.createClass()方法用于生成组件类 HelloWorldMsg、Name、Title
为组件传递参数,可以使用 this.props 对象
<HelloWorldMsg/>为复合组件
5.React stats(状态)和React Props:
var LinkdButton = React.createClass({
getDefaultProps: function(){
return {name:"张三"};
},
getInitialState: function(){
return {liked:false};
},
hanldeClick: function(){
this.setState({liked: !this.state.liked});
},
render: function(){
var text = this.state.liked?"喜欢":"不喜欢";
return (
<a style={myStyle} onClick={this.hanldeClick}>{this.props.name}{text}</a>
);
}
});
注:state 和 props 主要的区别在于 props 是不可变的,而 state 可以根据与用户交互来改变;
代码中通过getDefaultProps() 方法为 props 设置默认值;
6.设置stats状态:
setStats(object nextStats,function callback);
参数说明:nextStats:将要设置的新状态,该状态会与当前的stats合并;
callback:回调函数(可选),该函数会在setStats设置成功并重新渲染后调用;
例:
var CountNum = React.createClass({
getInitialState: function(){
return {num:0};
},
onclick: function(){
this.setState(function(newNum){
return {num:newNum.num+1};
});
},
render: function(){
return (
<h1 onClick={this.onclick}>点击次数:{this.state.num}</h1>
);
}
});
ReactDOM.render(
<CountNum/>,
document.getElementById('div_one')
);
注:getInitialState方法名不可改变,onclick方法名可自行更改调用,render方法名不可改动;
7.替换状态:replaceStats
replaceStats(object nextStats,function callback);
replaceState()方法与setState()类似,但是方法只会保留nextState中状态,原state不在nextState中的状态都会被删除。
例:
var ReplaceNum = React.createClass({
getInitialState: function(){
return {num:0};
},
onclick: function(){
this.replaceState(function(newNum){
return {num:newNum.num+1};
});
},
render: function(){
return (
<h1 onClick={this.onclick}>点击次数:{this.state.num}</h1>
);
}
});
ReactDOM.render(
<ReplaceNum/>,
document.getElementById('div_one')
);
8.设置属性:setProps
setProps(object nextProps,function callback);
参数说明:nextProps:将要设置的新属性,该属性会和当前的props合并;
callback:回调函数(可选),该函数会在setProps设置成功并重新渲染后调用;
9.替换属性:replaceProps
replaceProps(object nextStats,function callback);
参数说明:
- nextProps,将要设置的新属性,该属性会替换当前的props。
- callback,可选参数,回调函数。该函数会在replaceProps设置成功,且组件重新渲染后调用。