我遇到
"react-navigation": "2.18.2",
"@types/react-navigation": "2.13.0",
"typescript": "3.1.6",
我试图在子组件中使用withNavigation
HOC,但这导致父组件说并非所有必要的道具都被传递了下来。即
在父母中:
render() {
return (
<Child
someProp={true}
/>
);
}
在儿童中:
export interface IChildProps {
someProp: boolean
}
class Child extends React.Component<IChildProps & NavigationInjectedProps> {
render() {
return (<Text>Child component </Text>)
}
}
export default withNavigation(Child)
我在父母那里得到这个错误:
Property 'navigation' is missing in type ...
,表明父母似乎无法确定出于某种原因navigation
是通过withNavigation
HOC传递给孩子的吗?
我当然可以从父母那里传递navigation
道具,但是这使withNavigation
变得毫无用处,只是将问题移到了祖先链上:笑脸:
我已经查看了类型定义,但找不到任何错误。有人可以帮我弄清楚问题出在哪里吗?
答案 0 :(得分:1)
如果启用strictFunctionTypes
编译器选项,则可以重现该问题。 withNavigation
包中的@types/react-navigation
声明并非设计用于此选项。我已经提交了pull request进行了修复。请参阅this answer,了解在合并请求请求之前使用修改后的声明的可能方法。