我正在做一个egghead反应教程,其中导师试图在不使用prop-types api的情况下在函数组件上实现proptypes,这就是他如何做到这一点:
function SayHello(props){
return (
<div>
Hello {props.firstName} {props.lastName} !
</div>
)
}
SayHello.propTypes = {
firstName(props, propName, componentName) {
if (typeof props[propName] !== 'string') {
return new Error(`Hey, you should pass a string for ${propName} in ${componentName} but you passed a ${typeof props[propName]}`)
}
}
}
这可能是一个愚蠢的问题,但我真的无法理解这段代码是如何工作的,有人可以向我解释一下,如果firstName(props, propName, componentName)
被调用而没有被调用,
如何componentName
返回SayHello
?
它是每个组件的默认属性吗?
答案 0 :(得分:0)
实际的道具类型检查员(例如array
,bool
等)来自反应&#39; prop-types&#39;库返回以下签名的功能
function validate(props, propName, componentName, location, propFullName, secret)
因此,反应库只是使用有关当前正在验证的组件的参数来调用此函数。
如果您可以像导师一样编写自己的功能,那么它应该是相同的