将原型添加到未命名的匿名默认导出函数-例如“ export default()=> {}”

时间:2018-07-10 18:32:30

标签: javascript reactjs ecmascript-6 react-proptypes

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

sqflite

但是如何给import React from "react"; import PropTypes from "prop-types"; const Header = ({ name }) => <div>hi {name}</div>; Header.propTypes = { name: PropTypes.string }; export default Header 分配匿名导出的默认函数(propTypes),如下所示:

export default () =>{}

编辑:我尝试过:

 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>);

以这种方式导出,我认为这是不可能的,只是总体上尝试过的尝试之一。

2 个答案:

答案 0 :(得分:8)

执行此操作的理智方法是将函数分配给变量:

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 } }
);

答案 1 :(得分:-2)

了解如何执行以下操作:

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

Header是导出的文件。

此方法有任何缺点(是否会将同一文件加载回内存?)?从未在野外看到这种模式吗?那可能是一个很好的原因,因为我正在重新导入它。