Javascript 功能组件主体内部的propTypes呢?

Javascript 功能组件主体内部的propTypes呢?,javascript,reactjs,react-proptypes,Javascript,Reactjs,React Proptypes,为功能组件指定propTypes的标准方法是在函数体之后: const One = ({text}) => { return <div>One says {text}</div> }; One.propTypes = { text: PropTypes.string.isRequired }; export default One; const One = ({text}) => { One.propTypes = {

为功能组件指定propTypes的标准方法是在函数体之后:

const One = ({text}) => {
    return <div>One says {text}</div>
};

One.propTypes = {
    text: PropTypes.string.isRequired
};

export default One;
const One = ({text}) => {
    One.propTypes = {
       text: PropTypes.string.isRequired
    };

    return <div>One says {text}</div>
};

export default One;
实际上,我倾向于选择第二个,特别是如果组件有很多行,那么propTypes(合同的一部分)在视觉上接近声明。 但这种方式几乎无人提及,这让我想知道:

ES6(为内部的箭头函数指定属性)有效吗 尸体?我想不是,因为 变量
One
的函数在该点未发生。。。 但它似乎有效——下面的例子

它有什么缺点吗

const mifunc=(x,y)=>{
mifunc.prop1='hi';
返回x+y;
}
console.log(mifunc(2,3));

console.log(mifunc.prop1)
第二个示例之所以有效,是因为您只声明了函数,但它的
propTypes
属性直到第一次调用时才被设置,因此您认为在该点上没有进行赋值的假设是错误的。就我个人而言,我认为这种方法没有任何好处。这意味着组件甚至没有任何
propTypes
,直到它被渲染一次,并且每次渲染时都会被不必要的覆盖。@Lennholm您的注释应该是答案,我认为,第二个例子是有效的,因为您只声明了函数,但它的
propTypes
属性直到第一次调用时才被设置,所以您认为赋值在那一点上没有发生是不正确的。就我个人而言,我认为这种方法没有任何好处。这意味着该组件甚至没有任何
propTypes
,直到它被渲染一次,并且每次渲染时都会被不必要的覆盖。@Lennholm我想你的评论应该是答案。