我想提交我的登录表单,但我需要按两次才能完成登录表单,我不知道发生了什么。 我正在使用样式组件,这个按钮表单是一个 input 标签 我也在使用 firebase-hooks 我只想点一次提交
这是我的代码
List<HoldMyString> mylist;
HoldMyString hold;
private void ZXingScannerView_OnScanResult(ZXing.Result result)
{
Device.BeginInvokeOnMainThread(() =>
{
hold.HoldString = result.Text; // HoldString is taking string value
mylist.Add(hold);
});
}
答案 0 :(得分:4)
看起来您需要在这里使用 useEffect 钩子。您的 handleLogin 函数在每次点击时仅运行一次。第一次提交时,用户未按预期定义。当您第二次点击它时它会起作用,因为用户是真实的。
尝试从 handleLogin 函数中删除它。
if (user) {
setTimeout(() => {
history.push(`${ROUTES.HOME}`);
}, 1000);
}
然后添加一个 useEffect 钩子。
useEffect(() => {
if (user) {
setTimeout(() => {
history.push(`${ROUTES.HOME}`);
}, 1000);
}}, [user])
此效果将在组件安装时运行,和每次您的 user
状态更改后。 (这是假设您对用户使用反应状态,因为我看不到 user
来自哪里)
答案 1 :(得分:0)
将按钮类型从 type="submit"
更改为 type="button"
并使用 onCkick={() => clickHandler()}
处理点击