【全栈React】第8天: 属性类型
我们正在考虑如何在今天重新使用React组件,这样我们不仅可以在应用而且可以在团队中共享我们的组件。 唷! 我们做了第二周(相对毫发)! 通过这一点,我们已经讨论了React( PropTypes您可能已经注意到我们在组件中使用了 文档化不仅是好习惯,对于构建也是有益的reusable react components.
class Clock extends React.Component { // ... } Clock.propTypes = { // key is the name of the prop and // value is the PropType }
从这个 例如,几天前我们构建的 class Header extends React.Component { // ... } Header.propTypes = { title: React.PropTypes.string } React有很多类型可供选择,在 [](#basic-types)基本类型React暴露了我们可以开箱即用的几种基本类型。
可以告诉React我们希望它传递_anything_可以使用
Clock.propTypes = { title: React.PropTypes.string,count: React.PropTypes.number,isOn: React.PropTypes.bool,onDisplay: React.PropTypes.func,symbol: React.PropTypes.symbol,user: React.PropTypes.object,name: React.PropTypes.node } 我们已经看过如何使用 集合类型我们可以通过我们的 我们也可以要求数组只能使用某种类型的对象
可以使用 Clock.propTypes = { counts: React.PropTypes.array,users: React.PropTypes.arrayOf(React.PropTypes.object),alarmColor: React.PropTypes.oneOf(['red','blue']),description: React.PropTypes.oneOfType([ React.PropTypes.string,React.PropTypes.instanceOf(Title) ]),} 对象类型可以定义需要某个特定类型的特定类型或实例的类型。
Clock.propTypes = { basicObject: React.PropTypes.object,numbers: React.PropTypes .objectOf(React.PropTypes.numbers),messages: React.PropTypes .instanceOf(Message),contactList: React.PropTypes.shape({ name: React.PropTypes.string,phone: React.PropTypes.string,}) } React类型我们也可以通过React元素从父组件到子组件。 这对于构建模板和提供模板的定制非常有用。
Clock.propTypes = { displayEle: React.PropTypes.element } 当我们使用_element_时,React希望我们能够接受一个单独的子组件。 也就是说,我们将无法传递多个元素。 // Invalid for elements <Clock displayElement={ <div>Name</div> <div>Age</div> }></Clock> // Valid <Clock displayElement={ <div> <div>Name</div> <div>Age</div> </div> }></Clock> 必需类型可以通过在_任意_个属性类型中附加 Clock.propTypes = { title: React.PropTypes.name.isRequired,} 根据需要设置 自定义类型最后,还可以传递一个函数来定义自定义类型。 我们可以做一个单一属性或验证数组。 自定义函数的一个要求是,如果验证确定_not_ 传递,则期望我们返回一个
UserLink.propTypes = { userWithName: (props,componentName) => { if (!props[propName] || !props[propName].name) { return new Error( "Invalid " + propName + ": No name property defined for component " + componentName ) } } } 默认属性rendered,so we can define a common title instead by setting it's default prop value.有时,我们希望能够为属性设置默认值。 例如,我们昨天构建的 要设置默认的prop值,我们可以在组件上使用 Header.defaultProps = { title: 'Github activity' }
呃,今天我们浏览了很多文档。 使用组件的 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |