Javascript 断言在'this.props.children'中只传递一个子项`
有没有一种方法,使用Javascript 断言在'this.props.children'中只传递一个子项`,javascript,reactjs,Javascript,Reactjs,有没有一种方法,使用React.PropTypes来要求只向this.props.children传递一个孩子 如果必须提供一个孩子,我目前在代码中所做的是声明在propTypes中孩子是强制性的: propTypes { ... children: React.PropTypes.element.isRequired } …然后断言在render方法中传递了正确的数字,例如通过使用: const singleChild = this.props.children; …如果超
React.PropTypes
来要求只向this.props.children
传递一个孩子
如果必须提供一个孩子,我目前在代码中所做的是声明在propTypes
中孩子是强制性的:
propTypes {
...
children: React.PropTypes.element.isRequired
}
…然后断言在render
方法中传递了正确的数字,例如通过使用:
const singleChild = this.props.children;
…如果超过一个孩子通过,保证会吠叫
我想知道:
this.props.children
的目的,即允许传递更多或更少的任意元素)PropTypes.element.isRequired
是指定组件只有一个子组件的惯用方法
MyComponent.propTypes={
子项:PropTypes.element.isRequired
};
另一个选项是使用React,如果只有一个元素,则返回子React元素,否则返回错误。如果您需要保证运行时的子级数量(propTypes不适用于这些子级),那么这很方便
关于问题的第二部分(强制子元素具有特定的元素类型),包括一个componentWithName
。其用途如下:
componentWithName:将道具限制为仅允许具有特定名称/显示名称的组件。接受字符串或正则表达式。还接受一个选项对象,该对象具有可选的stripHOCs字符串数组,该数组包含要在验证之前剥离的特殊名称;HOC名称不得包含括号,且必须为大小写
文档中似乎提到了与您所做的相同的内容。您也可以按照文档中的描述编写一个自定义验证器,但它可能会让我觉得更详细。
foo: componentWithName('Component')
foo: componentWithName('Component', { stripHOCs: ['withDirection', 'withStyles'] })