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

gar*_*mac 5 javascript ecmascript-6 reactjs react-proptypes

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

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

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

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

export default Header
Run Code Online (Sandbox Code Playgroud)

但是,我可以propTypes为匿名导出的默认函数(export default () =>{})分配如下吗?:

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


 //how do I do this part/ is it possible?
   ?.propTypes = {
      name: PropTypes.string
   };
Run Code Online (Sandbox Code Playgroud)

编辑:我尝试过:

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

和:

// -------and like this at bottom --------
    default.propTypes = {
      name: PropTypes.string
    }
// ------------------
Run Code Online (Sandbox Code Playgroud)

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

Jor*_*ing 11

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

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

export default anon; 
Run Code Online (Sandbox Code Playgroud)

如果您真的相信自己有理由不这样做,那该怎么Object.assign办呢?

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

  • Object.assign!那非常聪明。 (3认同)