为什么我需要按两次才能提交表单?

时间:2021-04-17 23:57:49

标签: javascript reactjs firebase forms

我想提交我的登录表单,但我需要按两次才能完成登录表单,我不知道发生了什么。 我正在使用样式组件,这个按钮表单是一个 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);    
           

            
        });
    }

2 个答案:

答案 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()} 处理点击