Я создаю страницу, на которой пользователю необходимо ввести данные, чтобы добавить продукт в список продуктов. Если пользователь случайно уходит с этой страницы после ввода некоторых данных в форму, перед уходом от пользователя должно быть обязательное подтверждение. Но я борюсь с этим требованием. Я использую react-hook-form
для хранения данных на сервере JSON.
Я использую состояние leave
, если оно верно, то предупредите пользователя, прежде чем выйти, иначе ничего.
const [leave, setLeave] = useState(false);
Теперь я не знаю, где и как использовать это состояние для отображения окна предупреждения перед уходом. Вот моя форма, которая будет рендерить.
render (
<Form onSubmit={handleSubmit(onSubmit)}>
<Form.Row>
<Form.Group as={Col} className="mr-5">
<Form.Label column>Product Name</Form.Label>
<Form.Control
name="productName"
placeholder="Enter product Name"
required
ref={register}
/>
</Form.Group>
</Form.Row>
<Button variant="success" type="submit" className="text-white mt-5">
Add New Product
</Button>
</Form>
<Prompt when={Leave} message="Are you sure you want to leave ?" /> {/*Here I have promted*/}
);
Для простоты я дал только одно поле ввода. Теперь определение функции onSubmit приведено ниже.
const onSubmit = (formData) => {
setLeave(true); //here I am setting this true
axios.post("http://localhost:4000/products", formData);
navigation.push({
pathname: "/productList",
state: { added: "pass" },
});
};
Это будет работать при отправке формы, но я хочу получать запрос, когда пользователь нажимает кнопку "Назад" или любую навигационную ссылку.
onbeforeunload
. Вопрос аналогичного типа (хотя и не конкретный) находится здесь: stackoverflow.com/questions/1119289/ - person veddermatic   schedule 15.10.2020