React系列五(React-Props)
一、使用React Props
state和props主要的区别在于props是不可变的,而state可以根据与用户交互来改变。
这就是为什么有些容器组件需要定义state来更新和修改数据。而子组件只能通过props来传递数据。
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title>使用props</title>
<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="text"></div>
<script type="text/babel">
var SayHello=React.createClass({
render:function(){
return <p>Hello {this.props.name}</p>;
}
});
ReactDOM.render(
<SayHello name="pangtong" />,
document.getElementById("text")
);
</script>
</body>
</html>
二、通过 getDefaultProps() 方法为 props 设置默认值
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title>为props设置默认值</title>
<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="text"></div>
<script type="text/babel">
var SayHello=React.createClass({
getDefaultProps:function(){
return {
name:'pangpang'
};
},
render:function(){
return <p>Hello {this.props.name}</p>;
}
});
ReactDOM.render(
<SayHello />,
document.getElementById("text")
);
</script>
</body>
</html>
三、组合使用State和Props
在应用中组合使用state和props,可以在父组件中设置state,并通过在子组件上使用props将其传递到子组件上。
在render函数中获取父组件传递过来的数据。
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title>在应用中组合使用state和props</title>
<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="text"></div>
<script type="text/babel">
var Name = React.createClass({
render:function(){
return (
<p>{this.props.name}</p>
);
}
});
var Link = React.createClass({
render:function(){
return (
<a href={this.props.site}>
{this.props.site}
</a>
);
}
});
var WebSite = React.createClass({
getInitialState:function(){
return {
name:'百度',
site:'https://www.baidu.com'
};
},
render:function(){
return (
<div>
<Name name={this.state.name} />
<Link site={this.state.site} />
</div>
);
}
});
ReactDOM.render(
<WebSite />,
document.getElementById("text")
);
</script>
</body>
</html>