ReactJS编写无状态函数注释

jma*_*eli 4 javascript code-documentation reactjs

为ReactJS无状态函数编写注释的推荐方法是什么?

假设我有以下代码:

export const LoginForm = ({ submitting, handleSubmit }) => (
  <form onSubmit={handleSubmit(submit)}> ...(code)... </form>
));
Run Code Online (Sandbox Code Playgroud)

文档评论应该如何?

我的第一个想法是:

/**
 * Form for user login
 * @param {bool} submitting Shows if form submitting is in progress
 * @param {function} handleSubmit Form submit callback function
 */
Run Code Online (Sandbox Code Playgroud)

但是,这是不是为正确submittinghandleSubmit不是真正的PARAMS LoginForm功能.它们只是props参数的关键.另一方面,记录props为参数LoginForm似乎毫无意义,因为每个反应组件都有props一个参数,而道具键是函数最重要的部分.

有官方指导方针吗?(我没找到)


编辑

我还PropTypes定义了:

LoginForm.propTypes = {
  submitting: PropTypes.bool,
  handleSubmit: PropTypes.func.isRequired,
};
Run Code Online (Sandbox Code Playgroud)

也许这是道具相关文档的地方?如果是这样,应该怎么样?那有什么标准吗?

1ve*_*ven 7

您可以props在属性名称之前指定对象:

/**
 * Form for user login
 * @param {object} props Component props
 * @param {bool} props.submitting Shows if form submitting is in progress
 * @param {function} props.handleSubmit Form submit callback function
 */
export const LoginForm = ({ submitting, handleSubmit }) => (
  <form onSubmit={handleSubmit(submit)}> ...(code)... </form>
));
Run Code Online (Sandbox Code Playgroud)

有关详细信息,请参阅部分中的@param wiki页面Parameters With Properties.

  • `@return` 类型呢? (2认同)

000*_*000 6

我知道我参加这个聚会几乎晚了 3 年。仅供参考。可以这样做:

/**
 * @typedef {Object<string, any>} Props
 * @property {boolean} submitting Shows if form submitting is in progress
 * @property {function} handleSubmit Form submit callback function
 */

/** 
 * Form for user login
 *
 * @type {import('react').FunctionComponentElement<Props>}
 */
export const LoginForm = ({ submitting, handleSubmit }) => (
    <form onSubmit={handleSubmit(submit)}> ...(code)... </form>
);
Run Code Online (Sandbox Code Playgroud)

为简洁起见,还可以这样做:

/**
 * Form for user login
 *
 * @type {import('react').FunctionComponentElement<{
       submitting: boolean,
       handleSubmit: function
    }>}
 */
export const LoginForm = ({ submitting, handleSubmit }) => (
    <form onSubmit={handleSubmit(submit)}> ...(code)... </form>
);
Run Code Online (Sandbox Code Playgroud)

如果在您的 IDE 中启用了 Typescript,您可以避免在此设置中完全声明 prop-types。