Как я могу перенаправить после отправки формы React
Я новичок в React, может быть, и в английском. Как я могу перенаправить после отправки формы?
function Test() {
const { register, handleSubmit } = useForm()
const onSubmit = data => {
fetch(`http://localhost:4000/signup`)
//Here i want to redirect after signup
}
return (
<form onSubmit={handleSubmit(onSubmit)}>
....
</form>
);
}
1 ответ
Fetch можно использовать как с обратными вызовами, так и с обещаниями, вам нужно дождаться завершения асинхронного запроса перед перенаправлением.
Это простой пример обратного вызова, он предполагает, что вам не нужно обращаться к телу ответа запроса или проверять статус ответа.
function Test() {
const { register, handleSubmit } = useForm()
const onSubmit = data => {
fetch(`http://localhost:4000/signup`)
.then(resp => {
// Navigate here, either:
// use browser (not nice if SPA)
window.location = "http://www.url.com/path";
// use connected react router
// implementation specific
// e.g. this.props.push("/path");
});
}
return (
<form onSubmit={handleSubmit(onSubmit)}>
....
</form>
);
}
Если вы знакомы с обещаниями и async await, вы можете использовать следующие
function Test() {
const { register, handleSubmit } = useForm()
const onSubmit = async (data) => {
await fetch(`http://localhost:4000/signup`);
// navigate here
}
return (
<form onSubmit={handleSubmit(onSubmit)}>
....
</form>
);
}
В идеале вы должны стараться обрабатывать подобные побочные эффекты с помощью какого-либо промежуточного программного обеспечения, например Redux Thunk, Promise, Sagas или Observables. Это удаляет ненужную бизнес-логику из ваших компонентов, позволяет более чистое тестирование и лучшее разделение проблем.