【发布时间】:2020-04-04 14:00:35
【问题描述】:
在 Parent 中定义 proptypes 的最佳实践是什么?只将 props 传递给 Child 而不使用它?
简单用例:
const Parent = ({ p0, p1 }) => (
<section className="Parent">
<div>I'm the parent</div>
<p>{p0}</p>
<Child p1={p1} />
</section>
);
Parent.propTypes = {
p0: PropTypes.string.isRequired,
// p1 ?
};
还有子组件:
const Child = ({ p1 }) => (
<section className="Child">
<div>I'm a Child</div>
<span>{p1}</span>
</section>
);
Child.propTypes = {
p1: PropTypes.string.isRequired,
};
这里是父选项:
- 不要定义 p1 propTypes 并使用 // disable-eslint-next-line react/propTypes
p1: PropTypes.any.isRequired-
p1: Child.propTypes.p1(如果 Child 使用 React.memo 导出怎么办?) - 使用与 Child
p1: PropTypes.string.isRequired相同的类型(如果 Child 有 10 个道具,复制所有道具类型会很无聊) - 其他解决方案
【问题讨论】:
-
如果
Parent只是一个传递,则只使用上下文(不使用p1)
标签: reactjs eslint react-proptypes