在反应页面上结合 onClick 和 type=submit

Posted

技术标签:

【中文标题】在反应页面上结合 onClick 和 type=submit【英文标题】:combining onClick and type=submit on react page 【发布时间】:2021-06-20 18:41:10 【问题描述】:

我在 next.js 应用程序中有一个使用 reactstrap 的反应表单。表单有一个以这种方式设置的提交按钮...

<Button
   type="submit"
   className="btn btn-block"
   disabled=!pwFormValidations.pwIsSubmittable
   onClick=(e) => doSomeStuffToSessionStorageVariables(e)
   >
Next
</Button>

如果我将onClicktype=submit 结合使用会不会有问题?我担心如果表单移动得太快,我有时会错过onClick。我没有对用户在doSomeStuffToSessionStorageVariables 中输入的表单数据做任何事情,所以如果它不执行也没什么大不了的。

【问题讨论】:

为什么不在 handleSubmit 中添加 doSomeStuffToSessionStorageVariables 函数作为回调? 【参考方案1】:

由于您使用的是会话存储而不是任何需要验证的网络调用,因此使用onSubmit 将在提交表单之前完成函数调用:

<Form onSubmit=doSomeStuffToSessionStorageVariables>
  <Button ... /> // ⬅ no onClick needed here.
</Form>

const doSomeStuffToSessionStorageVariables = e => 
  sessionStorage.setItem('item', 'value');
  // everything above will execute before the form is submitted

我不确定您是否需要 doSomeStuff 的函数调用中的 e,但如果您需要该按钮,那么您也可以从事件本身获取它。

【讨论】:

以上是关于在反应页面上结合 onClick 和 type=submit的主要内容,如果未能解决你的问题,请参考以下文章

反应onClick和preventDefault()链接刷新/重定向?

onClick事件更改类名反应js

ReactJS:如何通过反应正确播放带有 onClick 事件的 html5 视频?

typescript 3.33的onClick问题并做出反应

反应:移动(iPhone)上的onClick需要2次点击?

反应输入字段不使用 onClick 事件更新 useState