react-bootstrap を使用すると、次のモーダル コンポーネントを作成できます。
<Modal>
<Modal.Header>
<Modal.Title>Modal heading</Modal.Title>
</Modal.Header>
<Modal.Body>
<h4>Text in a modal</h4>
</Modal.Body>
<Modal.Footer>
<Button>Close</Button>
</Modal.Footer>
</Modal>
モーダル コンポーネントの合成を行い、MyModal コンポーネントを作成したいと考えています。
import * as React from 'react';
import { Modal, ModalBody, ModalProps } from 'react-bootstrap';
interface Props extends ModalProps {
plain?: boolean;
}
class MyModal extends React.Component<Props> {
static Body: typeof ModalBody;
constructor(props: Props) {
super(props);
}
render() {
const { plain, ...other } = this.props;
return (
<Modal className={plain ? 'plain' : ''} {...other} />
);
}
}
export default MyModal;
しかし、次のように使用すると:
import MyModal from './MyModal';
...
render() {
return (
<MyModal plain={true}>
<MyModal.Body>
<p>Hello!</p>
</MyModal.Body>
</MyModal>
);
}
次のエラーが表示されます。
警告: React.createElement: タイプが無効です -- 文字列 (組み込みコンポーネントの場合) またはクラス/関数 (複合コンポーネントの場合) が必要ですが、未定義です。コンポーネントが定義されているファイルからコンポーネントをエクスポートするのを忘れている可能性があります。または、デフォルトのインポートと名前付きインポートを混同している可能性があります。
何がうまくいかないのですか?