考虑以下:

render(): ?React.Element<*> {
  if (this.state.error) {
    if (redirect) return <Redirect to={redirect} />;
    return <Page404 />;
  }
  ...
}


流给我错误:


  属性“到”
  在React元素'Page404'的道具中找不到属性


为什么流认为我正在传递Page404一个to道具?我该如何纠正?

最佳答案

由于您要返回?React.Element<*>,因此Flow必须用满足所有可能返回值的某些类型参数替换*。在这种情况下,这些类型参数之一是Props,因此它必须找到可以放在其中并同时匹配Page404Redirect的类型。由于它们没有匹配的Prop,因此Flow无法做到这一点。

简单的解决方案是将返回类型更改为?React.Element<any>。由于调用者很少关心它们具有的特定元素,而实际上只想要任何React元素,因此在这种情况下使用any不会失去任何安全性。

09-30 16:20
查看更多