[英]React component throwing TypeScript error for function passed in as prop
[英]Typescript Interface for Annoymous Function passed into React Component
我正在學習將 Typescript 與 React 功能組件(Bootstrap 模態組件)一起使用,並且對在使用匿名 ZC1C425268E68385D14AB5074C17A9 時應如何為組件正確定義 Typescript 接口感到困惑。
在下面的示例中, TheModal
組件在 boolean show
和匿名handleClose
處理關閉中傳遞。
export function Foo(): JSX.Element {
const [ showModal, setShowModal ] = useState(false);
return (
<MyContainer>
<TheModal show={showModal} handleClose={ () => setShowModal(!showModal) } />
</MyContainer>
)
}
下面是TheModal
組件和 Typescript 接口定義IModal
。 盡管代碼運行,但我認為any
不應該用於handleClose
。
interface IModal {
show: boolean;
handleClose: any; // <======== I believe we should use something better than `any`
}
function TheModal({show, handleClose}: IModal): JSX.Element {
return (
<Modal show={show} onHide={handleClose}>
<Modal.Header closeButton>
<Modal.Title>Hello World</Modal.Title>
</Modal.Header>
<Modal.Body>
</Modal.Body>
<Modal.Footer>
<Button variant="secondary" onClick={handleClose}>Cancel</Button>
</Modal.Footer>
</Modal>
)
}
在IModal
中定義handleClose
類型的正確方法是什么?
我相信打字處理程序的最佳方式是使用 React 內置類型:
import React from 'react';
interface IModal {
show: boolean;
handleClose: React.MouseEventHandler<HTMLButtonElement>;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.