将属性类型添加到未命名的匿名默认导出函数 - e.i "export default () =>{}"

Adding proptypes to unnamed anonymous default exported functions - e.i "export default () =>{}"

我知道您可以执行以下操作:

import React from "react";
import PropTypes from "prop-types";

const Header = ({ name }) => <div>hi {name}</div>;

Header.propTypes = {
  name: PropTypes.string
};

export default Header

但是我可以像下面这样用匿名导出的默认函数 (export default () =>{}) 分配 propTypes 吗?:

 export default ({ name }) => <div>hi {name}</div>;


 //how do I do this part/ is it possible?
   ?.propTypes = {
      name: PropTypes.string
   };

编辑:我试过:

    export default ({ name }) => (<div>
//  ----- here ------- (makes sense why, it doesn't work) 
    static propTypes = {
      name: PropTypes.string
    }
// ---------------
     {name}
    </div>);

和:

// -------and like this at bottom --------
    default.propTypes = {
      name: PropTypes.string
    }
// ------------------

我认为不可能,以这种方式导出,只是整体方法中的一种尝试。

找到方法后,我可以执行以下操作:

require('./Header').default.propTypes = {
  name: PropTypes.string
};

其中 Header 是导出的文件。

这种方法有什么缺点吗(这是将同一个文件加载回内存吗?)?在野外从未见过这种图案?这可能是有充分理由的,因为我正在重新导入它。

明智的做法是将函数分配给一个变量:

const anon = ({ name }) => <div>hi {name}</div>;
anon.propTypes = {
  name: PropTypes.string
};

export default anon; 

如果你真的相信你有理由不以理智的方式去做,Object.assign怎么样?

export default Object.assign(
  ({ name }) => <div>hi {name}</div>,
  { propTypes: { name: PropTypes.string } }
);