javascript - ReactJS:onSubmit 取决于 API 响应关闭模式框
问题描述
为什么表单提交后状态值没有更新?因为我需要在成功登录后关闭模型。
我试图检查这个useCallback钩子,但无法关闭对话框。
function HeaderComponent(props) {
const [loggedIn, setIsLoggedIn] = useState(false);
const [show, setShow] = useState(false);
const [modelShow, setmodelShow] = useState(false);
const handleClose = () => setShow(false);
const handleShow = () => setShow(true);
const registerUser = async event => {
event.preventDefault()
axios.post(`{api_url}/user/login`, data, {
})
.then((response) => {
localStorage.setItem("token", userDetails.auth_token);
setmodelShow(true)
router.push('/')
})
.catch((error)) => {
setmodelShow(false)
}
}
return (
<Modal show={show} onHide={handleClose} className={show ? 'intro' : ''}>
<form onSubmit={registerUser}>
<input type="email" />
<div className="form-group">
{
modelShow ? <input type="submit" name="" value="Login" onClick={handleClose}/>
: <input type="submit" name="" value="Login" />
}
</div>
</form>
</Model>
)
}
export default React.memo(HeaderComponent);
解决方案
您的代码需要进行一些修改,例如
return ( !modelShow ? <Modal show={show} onHide={handleClose} className={show ? 'intro' : ''}>
<form onSubmit={registerUser}>
<input type="email" />
<div className="form-group">
{
modelShow ? <input type="submit" name="" value="Login" onClick={handleClose}/>
: <input type="submit" name="" value="Login" />
}
</div>
</form>
</Model> : null )
推荐阅读
- list - 生成每个第 n 个元素都不同的列表
- unity3d - Unity 第一人称鼠标控制无法正常工作
- r - 重新编码 R 数据框列中的数据
- docker - 在 gcp 上安装 docker
- reactjs - 传递道具 - React
- python - 我的 for i in range 循环只迭代一次,我需要迭代 19 次才能创建单独的模型
- applescript - AppleScript:复制文件,用午夜的秒数重命名,然后打开它
- string - 如何在 golang 中将 %3a 或 %a 存储在 String 中?
- javascript - 需要帮助:如何解决此功能?
- python - 如果文件将对称链接,那么同时编辑的结果应该是什么?