在函数组件上使用proptypes

问题描述 投票:0回答:1

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

javascript reactjs jsx react-proptypes
1个回答
0
投票

来自react'prop-types'库的实际prop类型检查器(例如arraybool等)返回以下签名的功能

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.