【发布时间】:2018-02-01 01:28:10
【问题描述】:
我正在开发一个组件库,我想知道定义propTypes 是否是最佳实践,我知道即使它们是不是自定义道具,也会被普遍使用。我已经在其他 react 组件库(即 Material-UI)中看到过它,但我不确定为什么......
例如:
Button.propTypes = {
className: PropTypes.string,
onClick: PropTypes.func,
...
type: PropTypes.string.isRequired
};
const Button = (props) => <button {...props} />;
在这里,我显然想包含 type 属性,因为它是我的实现的自定义属性并且是该组件所必需的……但是其他两个呢?据我了解,像 className、onClick 这样的 props 已经被 React 定义在大多数(全部?)DOM 元素上。
考虑到这一点,当 onClick (click()) 和 className 等原生 DOM 元素属性传递到 HTML 元素时,React 是否会对它们进行类型检查?
如果是这样,如果它们是可选的,将它们包含在我的父组件的 propTypes 对象中似乎是多余的。
回答
在做了一些测试之后,答案似乎是否,HTML 元素的大多数原生属性都没有 React 提供的类型检查。有些有弃用和其他杂项。警告,但总的来说,原生道具上没有强制(或建议)类型,因此您应该将它们包含在您的组件中。
有关更多信息,请参阅 cmets 中的Shubham's Answer...
【问题讨论】:
标签: javascript reactjs