提交表单 React 后如何重定向
How can i redirect after submit form 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>
);
}
fetch 可以与回调或 promises 一起使用,您需要等待异步请求完成后再重定向。
这是一个简单的回调示例,它假设您不需要访问请求的响应主体或需要检查响应状态。
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>
);
}
如果您熟悉 Promises 和异步等待,您可以使用以下内容
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。这从您的组件中删除了不必要的业务逻辑,允许更清晰的测试和更好的关注点分离。
我是 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>
);
}
fetch 可以与回调或 promises 一起使用,您需要等待异步请求完成后再重定向。
这是一个简单的回调示例,它假设您不需要访问请求的响应主体或需要检查响应状态。
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>
);
}
如果您熟悉 Promises 和异步等待,您可以使用以下内容
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。这从您的组件中删除了不必要的业务逻辑,允许更清晰的测试和更好的关注点分离。