将正则表达式作为组件prop传递时的正确PropType是什么
React 正则类型Prop的PropType规范配置
- 官方
prop-types库没有提供单独的正则专属内置校验规则,符合规范的正确写法是使用instanceOf校验器匹配RegExp实例:
import PropTypes from 'prop-types'; // 组件内配置propTypes YourComponent.propTypes = { // 普通可选正则prop typeRegex: PropTypes.instanceOf(RegExp), // 如果是必填项就追加isRequired // typeRegex: PropTypes.instanceOf(RegExp).isRequired };
- 这种写法可以覆盖所有正则传参场景:既可以匹配示例中
/Photographer/gi这种正则字面量,也能正确识别通过new RegExp('Photographer', 'gi')构造函数创建的正则实例。 - 不要偷懒用
PropTypes.object做校验,这个规则范围太宽泛,会把普通对象、Date实例等其他引用类型误判为合法值,达不到类型校验的目的。
内容的提问来源于stack exchange,提问作者danwoods
相关产品推荐
相关产品推荐

