我很想知道reactjs PropTypes
是如何工作的,因为我想在我正在编写的应用程序中实现类似的东西。
具体来说,我正在尝试以与reactjs相同的格式创建属性验证器(即{type}.{isRequired}
语法)。
此外,我希望这样做,以便一次只存在每个验证函数的一个实例。
我目前的实施如下:
// Interface
class PropTypes
{
static string(isRequired)
{
return isRequired ?
ConcretePropTypes.string_required :
ConcretePropTypes.string;
}
}
// Concrete prop validation
class ConcretePropTypes
{
static string(x) { return typeof x == "string"; }
static string_required(x) { return !isNan(x) && this.string(x); }
}
// Sample usage
var propTypes = { name: PropTypes.string(true) };
...但这需要使用参数(即isRequired
)来确定要返回的验证函数。由于传递的布尔参数表示不直观(除非查看源代码),我更倾向于使用类似于reactjs的语法 - 即string.isRequired
- 以便它消除其使用中的任何歧义。
总而言之,我正在寻找的是有关reactjs proptypes如何工作的信息,因此,我如何将其应用于我自己的代码。如果问题标题具有误导性并且需要更改,请告诉我。