在React中键入传递给HOC的道具时出错

时间:2019-10-07 13:35:53

标签: reactjs typescript

我正在尝试将组件上的方法传递给子代...因此,Account有一个子代PasswordChange。我想从PasswordChange传递useStateAccount fn来切换布尔值以显示/隐藏模式。

但是,出现此打字稿错误:

  

TypeScript错误   /用户/sb/git/fl-app/src/components/PasswordChange/index.tsx(124,29):   类型为'({firebase,closeClick,name}:PCProps&P)=>的参数   元素”不可分配给“ ComponentType <{   firebase:应用程式; }>'。输入'({firebase,closeClick,name}:PCProps&   P)=>“元素”不可分配给“ FunctionComponent <{   firebase:应用程式; }>'。       参数'__0'和'props'的类型不兼容。         输入'PropsWithChildren <{firebase:App; }>'不可分配给'PCProps&P'类型。           输入'PropsWithChildren <{firebase:App; }>'缺少类型'P'中的以下属性:closeClick,名称为TS2345

// Account
const [isPasswordChangeVisible, setIsPasswordChangeVisible] = React.useState(
    false,
  )

...

{isPasswordChangeVisible && (
  <PasswordChange
    closeClick={() => setIsPasswordChangeVisible(false)}
    name="Terrence McBigglesWorth"
  />
)}

PasswordChange包裹在一个称为withFirebase的HOC中,该HOC提供了火力,并传递了所有道具:

// with firebase
interface P {
  closeClick?: () => void
  name?: string
}

export const withFirebase = (
  Component: React.ComponentType<{ firebase: firebase.app.App }>,
) => (props: P) => (
  <FirebaseContext.Consumer>
    {firebase => <Component {...props} firebase={firebase} />}
  </FirebaseContext.Consumer>
)

这是整个PasswordChange组件:https://pastebin.com/HF3Hys4z

有什么想法我要去哪里吗?提前非常感谢

0 个答案:

没有答案