React中的PropTypes

Ben*_* Li 5 reactjs react-proptypes

在某些例子中,我看到过这样的事情:

Footer.propTypes = {
  completedCount: PropTypes.number.isRequired,
  activeCount: PropTypes.number.isRequired,
  filter: PropTypes.string.isRequired,
  onClearCompleted: PropTypes.func.isRequired,
  onShow: PropTypes.func.isRequired
}
Run Code Online (Sandbox Code Playgroud)

这些PropTypes真正在做什么?他们是不是很好或必须拥有?

Ura*_*rel 3

正如 FinalFreq 所指出的,我已纠正!“提供的示例将在未来版本的 React 中完美运行。React 不推荐直接调用 proptypes 函数,但注释组件将在当前和未来版本中正常运行。”

如果您只是学习 JS 中的类型,我建议使用 flowtypes,它在构建时而不是运行时工作。这在编辑器中有效!当不太明显的类型丢失、为空或不同类型时,编辑器扩展还使用强推理来提醒您。主要好处是它可以加快开发速度并减少错误,而不会减慢运行时间。您可以在生产之前轻松地从 js 中剥离流程。

FlowType: https: //flowtype.org/docs/getting-started.html#_

如果您想要更强大、功能更丰富的集合来学习 JS 中的类型,我建议您使用 TypeScript。

打字稿:https: //github.com/Microsoft/TypeScript

为了回答你的问题,道具类型从来都不是必须具备的,并且一度被认为是实验性的。我喜欢它们,但恕我直言,flowtype 更实用。主要用途是通过在开发早期发出警告来防止组件的误用,并提供编码文档以便更好地理解(后代)。

编辑:我还想澄清的是,proptypes 也可以在生产中被剥离。