在函数组件上使用proptypes

时间:2017-12-31 02:33:32

标签: javascript reactjs jsx react-proptypes

我正在做一个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? 它是每个组件的默认属性吗?

1 个答案:

答案 0 :(得分:0)

实际的道具类型检查员(例如arraybool等)来自反应&#39; prop-types&#39;库返回以下签名的功能

function validate(props, propName, componentName, location, propFullName, secret)

因此,反应库只是使用有关当前正在验证的组件的参数来调用此函数。

如果您可以像导师一样编写自己的功能,那么它应该是相同的