Typescript无法理解props是通过Navigation HOC的反应导航提供的

时间:2018-11-05 11:59:55

标签: typescript react-native react-navigation higher-order-functions

我遇到

"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变得毫无用处,只是将问题移到了祖先链上:笑脸:

我已经查看了类型定义,但找不到任何错误。有人可以帮我弄清楚问题出在哪里吗?

1 个答案:

答案 0 :(得分:1)

如果启用strictFunctionTypes编译器选项,则可以重现该问题。 withNavigation包中的@types/react-navigation声明并非设计用于此选项。我已经提交了pull request进行了修复。请参阅this answer,了解在合并请求请求之前使用修改后的声明的可能方法。