state和props主要得区别在于props是不可变得,而state可以根据与用户交互来改变。这就是为什么有些容器组件需要定义state来更新和修改数据,而子组件只能通过props来传递数据。
使用props
以下实例演示了如何在组件中使用props;
1 | function HelloMessage(props){ |
实例中name属性通过props.name来获取
默认Props
你可以通过组件类得defaultProps属性为props设置默认值,示例如下:
1 | class HelloMessage extends React.Component{ |
State和Props
以下实例演示了如何在应用中组合使用state和props.我们可以在父组件中设置state,并且通过在子组件上使用props将其传递到子组件上。在render函数中,
我们设置name和site来获取父组件传递过来的数据。
1 | class WebSite extends React.Component{ |
Props验证
React.ProTypes在React v15.5版本后已经移到了prop-types库。
1 | <script src="https://cdn.bootcss.com/prop-types/15.6.1/prop-types.js"></script> |
Props验证使用propTypes,它可以保证我们得应用组件被正确使用,React.PropTypes提供很多验证器来验证传入数据是否有效。当向props传入无效数据时,javaScript控制台会抛出警告。以下实例创建一个Mytitle组件,属性title是必须的且是字符串,非字符串类型会自动转换为字符串:
React 16.4实例
1 | var title="菜鸟教程"; |
React 15.4实例
1 | var title="菜鸟教程"; |
更多验证器说明如下:
1 | MyComponent.propTypes={ |