我如何重定向在 reactjs 中提交我的表单并使用 formik
How can i redirect on submitting my form in reactjs and using formik
重定向不工作,我如何重定向我正在使用功能组件。
const [redirect,setredirect]=useState(false);
const onSubmit = (values,{resetForm}) => {
console.log('Form data', values);
setredirect(true);
if(redirect)
{
return <Redirect to='/' />
}
您可以使用 history.push
重定向。
const history = useHistory()
history.push('/')
顺便说一句,检查 redirect
是否为真的条件将不起作用,因为 setRedirect
是异步的。您根本不需要 redirect
状态。
const onSubmit = async (values) => {
// Send an API request with the values
// await makeAPICall(values)
history.push('/')
};
问题在于设置状态不会(必然)同步更改它,因此如果您在设置状态后立即检查状态,它可能仍然包含旧值。在 React 中,设置状态不会立即改变状态,而是创建一个挂起的状态转换。如果您需要在设置后立即可靠地访问新状态,只需将其保存到一个临时变量即可:
let shouldRedirect = true; // I'm assuming this is not hard-coded or the if statement makes no sense.
setredirect(shouldRedirect);
if (shouldRedirect) {
// Do something
}
重定向不工作,我如何重定向我正在使用功能组件。
const [redirect,setredirect]=useState(false);
const onSubmit = (values,{resetForm}) => {
console.log('Form data', values);
setredirect(true);
if(redirect)
{
return <Redirect to='/' />
}
您可以使用 history.push
重定向。
const history = useHistory()
history.push('/')
顺便说一句,检查 redirect
是否为真的条件将不起作用,因为 setRedirect
是异步的。您根本不需要 redirect
状态。
const onSubmit = async (values) => {
// Send an API request with the values
// await makeAPICall(values)
history.push('/')
};
问题在于设置状态不会(必然)同步更改它,因此如果您在设置状态后立即检查状态,它可能仍然包含旧值。在 React 中,设置状态不会立即改变状态,而是创建一个挂起的状态转换。如果您需要在设置后立即可靠地访问新状态,只需将其保存到一个临时变量即可:
let shouldRedirect = true; // I'm assuming this is not hard-coded or the if statement makes no sense.
setredirect(shouldRedirect);
if (shouldRedirect) {
// Do something
}