循环这个.props.children我如何测试他们的类型
Looping this.props.children how do I test their type?
在自定义 React 组件的以下代码片段中
React.Children.map(this.props.children), (child) => {
if (predicate(child)) {
// do stuff
}
else {
// do other stuff
}
}
predicate
是一个测试子属性或其他属性的函数。 如何编写predicate
来测试子元素是什么类型的元素?
在文章中, 在 React 中向孩子发送道具,你会看到我上面应用的相同模式,除了他的谓词函数看起来像child.type === RadioOption.type
——如果我想检查孩子继承的类型,这不起作用。
就我而言,我有StatelessModal
- child
可能是扩展StatelessModal
的几个不同组件之一。
当我知道孩子是扩展无状态模式的模态组件之一时,我发现predicate = (child) => child instanceof StatelessModal
和predicate = (child) => child.type instanceof StatelessModal
都不起作用。
我在控制台上玩了一圈,发现这是有效的:
predicate = (child) => child.type.prototype instanceof StatelessModal
虽然ReactElement
的type
属性似乎没有记录,但可以合理地注意到,在这里,child
是一个ReactElement
,而child.type
是一个ComponentClass
(你可能还会发现它可能是一个string
或StatelessComponent
)——ComponentClass 是定义组件的类;如果组件是通过继承创建的, 类原型链包括继承的类型,由instanceof
揭示
接受的答案对我根本不起作用。
我已经测试了几种检查儿童类型的方法。结论是:
predicate = (child) => child.type === StatelessModal
在开发和生产环境中为 react@16.7 和 react@16.8 中的类组件和功能组件工作。
https://github.com/dancerphil/react-children-type 中的更多测试用例
https://dancerphil.github.io/react-children-type/显示了生产构建的结论。
- 如何在谷歌电子表格脚本中测试范围参数的类型
- 正在测试Form Helper创建的输入类型
- 类型错误:无法读取未定义的属性“apply”,在测试中使用 javascript apply
- AngularJS Jasmine测试:类型错误:'未定义'不是对象
- Ionic V2和Cordova插件-未捕获类型错误:无法设置属性'测试'为null
- 没有返回类型的函数的Javascript单元测试
- 窗口对象通过对象类型测试,但 hasOwnProperty 导致错误
- 使用超级测试测试 koa 路由时,内容类型标头始终相同
- 为什么我的余烬测试给我类型错误:“未定义”不是一个函数
- 什么是上下文中静态类型javascript的示例,以更好地进行单元测试
- 循环这个.props.children我如何测试他们的类型
- 类型错误:parsed 在 angularjs 服务单元测试中未定义
- 角度业力测试在 $scope.$parent 函数上获得“类型错误:'未定义'不是一个函数”
- 带有外部依赖项的Jasmine单元测试指令失败,类型错误:'[object对象]'
- Firefox 23中的QUnit测试:;类型错误:document.setUserData不是函数;
- angularjs因果报应测试类型错误$route
- gullow因果报应测试类型错误:服务器不是一个函数
- 角测试类型错误
- 另一个组件中的组件测试类型
- angularJS Protractor e2e测试类型错误:Object [Object Object]没有方法