反应日期字符串的属性验证

时间:2019-02-04 16:15:01

标签: reactjs date react-proptypes

如何验证yyyy/mm/dd格式的日期字符串?

我知道我可以使用PropTypes.string,但是它太松散了。

3 个答案:

答案 0 :(得分:1)

答案 1 :(得分:1)

基本上,您可以使用适当的正则表达式从prop-types文档中复制粘贴:

yourProp: function(props, propName, componentName) {
  if (!/\d{4}\/\d{2}\/\d{2}/.test(props[propName])) {
    return new Error(
      'Invalid prop `' + propName + '` supplied to' +
      ' `' + componentName + '`. Validation failed.'
    );
  }
}

请记住,文档是您的朋友:https://www.npmjs.com/package/prop-types

答案 2 :(得分:1)

我建议不要使用PropTypes验证格式,因为它主要用于道具的类型检查

由于PropTypes仅在运行时有用(即在编译期间不会生成警告),因此您可以执行以下操作:

if (!/\d{4}\/\d{2}\/\d{2}/.test(this.props.date) && (!process.env.NODE_ENV || process.env.NODE_ENV === 'development')) {
  console.warn('Warning: Invalid format for date prop');
}

例如,您可以将其放入构造函数中。


话虽如此,如果您确实想要通过传递自定义函数,仍然可以使用PropTypes。我打算写一个解决方案,但 0xc14m1z 击败了我:)

以下是我的先前答案,您可能会发现它有用:https://stackoverflow.com/a/40302064/2030321