React组件
创建一个React组件创建组件需要调用React.createClass方法,传入的参数为一个对象,对象必须定义一个render方法,render方法返回值为组件的渲染结构,也可以理解为一个组件实例,返回值有且只能为一个组件实例,或者返回null/false,当返回值为null/false的时候,React内部通过标签替换 无状态组件除了可以通过React.createClass来创建组件以外,组件也可以通过一个普通的函数定义,函数的返回值为组件渲染的结果。 渲染组件到DOM主要步骤: 组件的渲染: 组件状态StateReact组件中可以存储自己的当前状态,其渲染结果由组件属性和状态共同决定,状态和属性的区别是,状态维护在组件内部,属性是由外部控制 控制状态的API
组件属性propsReact组件可以传递属性给组件,传递方法和HTML没有差异,可以通过this.props获取组件属性,属性相关API为: children属性组件属性中有一个特殊属性,表示子组件 属性类型检查为了保证组件传递属性的正确性,可以通过定义propsType对象来实现对组件属性的严格校验: var MyComponent = React.createClass({
propTypes: {
optionalArray: React.PropTypes.array,optionalBool: React.PropTypes.bool,optionalFunc: React.PropTypes.func,optionalNumber: React.PropTypes.number,optionalObject: React.PropTypes.object,optionalString: React.PropTypes.string,// 任何可以被渲染的包括,数字,字符串,组件,或者数组
optionalNode: React.PropTypes.node,// React 元素
optionalElement: React.PropTypes.element,// 枚举
optionalEnum: React.PropTypes.oneOf(['News','Photos']),// 任意一种类型
optionalUnion: React.PropTypes.oneOfType([
React.PropTypes.string,React.PropTypes.number,React.PropTypes.instanceOf(Message)
]),// 具体类型的数组
optionalArrayOf: React.PropTypes.arrayOf(React.PropTypes.number),// 具体类型的对象
optionalObjectOf: React.PropTypes.objectOf(React.PropTypes.number),// 符合定义的对象
optionalObjectWithShape: React.PropTypes.shape({
color: React.PropTypes.string,fontSize: React.PropTypes.number
}),requiredFunc: React.PropTypes.func.isRequired,requiredAny: React.PropTypes.any.isRequired,// 自定义校验
customProp: function(props,propName,componentName) {}
}
});
属性单向传递React的单向数据流模式,数据的流动管道是props,流动的方向是组件的层级自顶向下的方向,所以一个组件不能修改自身属性,组件的属性一定是通过父组件传递过来的或者默认属性 无状态组件属性对于无状态组件,可以添加.propTypes和.defaultProps属性到函数上 组件的嵌套组合(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |