自定义反应挂钩的原型

Ade*_*ran 13 reactjs

随着React钩子的到来,我们是否应该将prop-types用于React定制钩子,例如,

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

const useTitle = title => {
  React.useEffect(() => {
    document.title = title;
  }, [title]);
}

useTitle.propTypes = {
  title: PropTypes.string.isRequired,
};

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

以上是验证传递给自定义React钩子的参数的好方法,还是应该采用其他方法来验证传递给自定义钩子的道具/参数,这基本上只是一个简单的函数。

小智 12

不。React 不验证自定义钩子或内置钩子道具。

在此处查找 updateFunctionComponent,它验证checkPropTypes用于反应组件的prop 类型,然后使用钩子呈现它,即 check out renderWithHooks

现在,如果您在 renderWithHooks 方法中检查此处,它会更新调度程序并调用您的功能组件,该组件又会调用您的自定义钩子,因为它只是您的功能组件内部的另一个函数调用。

您的自定义钩子将调用内置钩子。您可以在此处查看实施情况。根据调度程序的类型,它将调用内置钩子。如果您checkPropTypes在整个文件中搜索,您将找不到prop-types/checkPropTypes用于验证 prop 类型的验证逻辑或依赖项。

是一些关于反应钩子如何工作的好文章