首页 > 解决方案 > Typescript 不明白 props 是由 react-navigation withNavigation HOC 提供的

问题描述

我有一个问题

"react-navigation": "2.18.2", "@types/react-navigation": "2.13.0", "typescript": "3.1.6",

我正在尝试withNavigation在子组件中使用 HOC,但这会导致父组件说并非所有必要的道具都被传递下来。IE

在父母中:

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通过 HOC 传递给子级?withNavigation

我当然可以从父级传递navigation道具,但这会变得withNavigation毫无用处,只是将问题移到祖先链上:笑脸:

我查看了类型定义,找不到任何错误。这里有人可以帮我解决问题吗?

标签: typescriptreact-nativereact-navigationhigher-order-functions

解决方案


strictFunctionTypes如果启用编译器选项,我可以重现该问题。withNavigation包中的声明@types/react-navigation不是为使用此选项而设计的。我已经提交了一个拉取请求来修复它。在合并拉取请求之前,请参阅此答案以了解使用我修改后的声明的可能方式。


推荐阅读