断言在' this.props.children '中只传递了一个子节点
assert that only single child is passed in `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文档,PropTypes.element.isRequired
是指定组件只有一个子组件的惯用方法。
MyComponent.propTypes = {
children: PropTypes.element.isRequired
};
另一个选择是使用React. children .only(),如果只有一个,它将返回子React元素,否则会出现错误。如果您需要在运行时保证子节点的数量,这是很方便的,这不是propTypes的目的。
关于你问题的第二部分(强制子元素具有特定的元素类型),Airbnb的自定义PropType验证器包括componentWithName
。其用法如下:
componentWithName:限制prop只允许具有特定名称/displayName的组件。接受字符串或正则表达式。还接受一个options对象,该对象带有一个可选的stripHOCs数组,其中包含要在验证之前剥离的字符串HOC名称;HOC名称不能包含圆括号,并且必须使用驼峰大小写。
foo: componentWithName('Component')
foo: componentWithName('Component', { stripHOCs: ['withDirection', 'withStyles'] })
相关文章:
- 选择<李>使用普通JavaScript的子节点,而不是孙节点
- js循环遍历单击的元素子节点
- 如何将数据添加到json的子节点
- 删除HTML节点而不删除其子节点
- 如何在javascript DOM api中获取具有给定条件的子节点
- 仅使用某些子节点访问xml中父节点的子节点
- js初学者-如何在比网页中的DOM节点低一个级别上立即解析所有子节点
- 获取下一个不工作Javascript DOM的同级父节点的子节点
- 追加子节点创建一个新节点
- JSTREE:创建一个新的子节点
- 如何将一个xml文件与几个节点和子节点链接起来
- Snap.load()一个svg img并为其填充颜色设置动画's子节点
- 如何设置两个html节点的innerText,其中一个节点是子节点
- 扩展一个节点,直到它的子节点有一个兄弟节点
- 如何给子节点一个'id'在jtree中使用JSON
- 在特定子节点周围加载相邻子节点的最佳策略是什么?最好是使用一个查询
- 提供程序在IE 10/11中给出错误“onlyChild必须传递一个只有一个子节点的子节点”
- 选择一个具有具有特定值的子节点的特定节点
- 如何使用xmlhttprequest使一个新的子节点与php脚本中的节点数据一起出现在html中
- 在jQuery中查找前一个兄弟节点的子节点