如何验证yyyy/mm/dd
格式的日期字符串?
我知道我可以使用PropTypes.string
,但是它太松散了。
答案 0 :(得分:1)
您为什么不使用Date.parse()
?
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/parse
答案 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