#reactjs #react-bootstrap #react-hook-form
Вопрос:
Я пытаюсь создать модал с помощью react-bootstrap
реагировать-крючок-форма с полноэкранным модальным без РАБОТЫ с формой
Но, когда я добавляю форму, модальный режим неправильно работает в полноэкранном режиме.
реагировать-крючок-форма с полноэкранным модальным без формы НЕ РАБОТАЕТ
Я думаю, что проблема в том, где найти форму, чтобы она правильно печаталась в html
Спасибо!
Ответ №1:
Просто переместитесь Form
в Modal.Body
:
import React, { useRef, useState } from "react";
import { Button, Col, Form, Modal } from "react-bootstrap";
import { useForm } from "react-hook-form";
import "bootstrap/dist/css/bootstrap.min.css";
export default function App() {
const [show, setShow] = useState(false);
const formRef = useRef();
const {
register,
setValue,
// handleSubmit,
watch,
formState: { errors },
reset
} = useForm({
mode: "onChange"
});
function handleShow(breakpoint) {
setShow(true);
}
const onSubmit = (data) => {
alert(JSON.stringify(data));
};
const onSubmitClick = () => {
formRef.current.submit();
};
return (
<>
<Button className="me-2" onClick={() => handleShow("sm-down")}>
Full screen
</Button>
<Modal show={show} fullscreen={true} onHide={() => setShow(false)}>
<Modal.Header closeButton>
<Modal.Title>Modal</Modal.Title>
</Modal.Header>
<Modal.Body>
<Form
ref={formRef}
// onSubmit={handleSubmit(onSubmit)}
>
<Form.Group as={Col} xs={12} sm={6} className="mb-3">
<Form.Label>Fecha</Form.Label>
<Form.Control
{...register("fecha", { required: true })}
isInvalid={errors?.fecha}
/>
</Form.Group>
<p>
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do
eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut
enim ad minim veniam, quis nostrud exercitation ullamco laboris
nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in
reprehenderit in voluptate velit esse cillum dolore eu fugiat
nulla pariatur. Excepteur sint occaecat cupidatat non proident,
sunt in culpa qui officia deserunt mollit anim id est laborum.
</p>
<p>
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do
eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut
enim ad minim veniam, quis nostrud exercitation ullamco laboris
nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in
reprehenderit in voluptate velit esse cillum dolore eu fugiat
nulla pariatur. Excepteur sint occaecat cupidatat non proident,
sunt in culpa qui officia deserunt mollit anim id est laborum.
</p>
<p>
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do
eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut
enim ad minim veniam, quis nostrud exercitation ullamco laboris
nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in
reprehenderit in voluptate velit esse cillum dolore eu fugiat
nulla pariatur. Excepteur sint occaecat cupidatat non proident,
sunt in culpa qui officia deserunt mollit anim id est laborum.
</p>
<p>
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do
eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut
enim ad minim veniam, quis nostrud exercitation ullamco laboris
nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in
reprehenderit in voluptate velit esse cillum dolore eu fugiat
nulla pariatur. Excepteur sint occaecat cupidatat non proident,
sunt in culpa qui officia deserunt mollit anim id est laborum.
</p>
<p>
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do
eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut
enim ad minim veniam, quis nostrud exercitation ullamco laboris
nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in
reprehenderit in voluptate velit esse cillum dolore eu fugiat
nulla pariatur. Excepteur sint occaecat cupidatat non proident,
sunt in culpa qui officia deserunt mollit anim id est laborum.
</p>
<p>
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do
eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut
enim ad minim veniam, quis nostrud exercitation ullamco laboris
nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in
reprehenderit in voluptate velit esse cillum dolore eu fugiat
nulla pariatur. Excepteur sint occaecat cupidatat non proident,
sunt in culpa qui officia deserunt mollit anim id est laborum.
</p>
<Form.Group as={Col} xs={12} sm={6} className="mb-3">
<Form.Label>Monto</Form.Label>
<Form.Control
{...register("monto", { required: true })}
isInvalid={errors?.monto}
/>
</Form.Group>
</Form>
</Modal.Body>
<Modal.Footer>
<Button onClick={onSubmitClick} type="submit" variant="success">
Enviar
</Button>
</Modal.Footer>
</Modal>
</>
);
}
Комментарии:
1. Привет, как я мог запустить отправку ?, Модальный. Нижний колонтитул находится за пределами формы, спасибо за ответ
2. @Kamousagi Ты можешь использовать
useRef
крючок. Я обновил код вcodesandbox
. Пожалуйста, проверьте это еще раз.