考虑以下:
render(): ?React.Element<*> {
if (this.state.error) {
if (redirect) return <Redirect to={redirect} />;
return <Page404 />;
}
...
}
流给我错误:
属性“到”
在React元素'Page404'的道具中找不到属性
为什么流认为我正在传递
Page404
一个to
道具?我该如何纠正? 最佳答案
由于您要返回?React.Element<*>
,因此Flow必须用满足所有可能返回值的某些类型参数替换*
。在这种情况下,这些类型参数之一是Props
,因此它必须找到可以放在其中并同时匹配Page404
和Redirect
的类型。由于它们没有匹配的Prop
,因此Flow无法做到这一点。
简单的解决方案是将返回类型更改为?React.Element<any>
。由于调用者很少关心它们具有的特定元素,而实际上只想要任何React元素,因此在这种情况下使用any
不会失去任何安全性。