【发布时间】:2018-11-22 15:53:01
【问题描述】:
我正在使用 React with Flow。如果我在渲染时忘记设置一些需要的道具,Flow 会给我错误,所以我可以防止这个问题。
但是 Flow 实际上并没有在运行时工作。因此,如果我使用的值被视为数字不是数字,Flow 就无法捕捉到这一点。例如,如果值来自其他地方,比如服务器端,并且它是字符串,但 Flow 只是被视为数字,所以最终我会在运行时遇到一些错误。
但是 PropTypes 在运行时工作,所以在同样的情况下,我会收到错误消息 PropType 预期的数字,但实际上它是字符串。
当 API 更改并且返回的数据不同时,也可能发生这种情况。它可能是未定义的或其他任何东西,可能不是我预期的实际值。
所以我实际上同时使用了 Flow 和 PropTypes,但是我搜索了两者一起使用,但找不到任何相关信息。
相反,我发现的只是“Flow”替换了“PropTypes”。我不这么认为,我已经提到了这两者之间的区别。这两个作品完全不同,每个都有很多好处,所以我认为将它们结合起来会有很好的协同作用。
但是现在我同时使用这两种方法,我必须为 props 定义类型,还必须始终定义 propTypes 和 defaultProps,这使我的代码实际上很长,并且只制作单个组件就需要很多时间。
我应该停止同时使用 Flow 和 PropTypes 吗?我认为 Flow 比 PropTypes 更好,使用静态类型检查器有很多好处,所以我想继续使用它。还有对 Flow 的很好的 VSCode 支持,但不是 proptypes。
如果我使用 Flow,是否不需要 PropTypes?任何建议都会很感激。
【问题讨论】:
-
如果您使用 flow-runtime,flow 可以在运行时工作。但是,它可能会显着降低您的应用程序的速度,因为检查将无处不在,而不仅仅是在组件属性中。
-
如您所说,propTypes 在运行时工作,因此它提供了更准确的类型检查。如果您想要另一种选择,您可以查看 Typescript 3.0,其中 type 将转换为 propTypes 以用于反应组件。 [文档][1] [1]:typescriptlang.org/docs/handbook/release-notes/…
-
@DanielTran 哇,太棒了!
标签: reactjs flowtype react-proptypes