“提交”按钮正在刷新页面而不是提交表单?(ReactJS和reactoastify)
正如标题所说,我有两个格式完全相同的按钮,但其中一个按钮在单击时刷新页面,而不是提交表单。我只需要它来触发一个祝酒词 这是工作按钮:“提交”按钮正在刷新页面而不是提交表单?(ReactJS和reactoastify),reactjs,button,page-refresh,onsubmit,react-toastify,Reactjs,Button,Page Refresh,Onsubmit,React Toastify,正如标题所说,我有两个格式完全相同的按钮,但其中一个按钮在单击时刷新页面,而不是提交表单。我只需要它来触发一个祝酒词 这是工作按钮: <button type="submit" className="btn btn-primary my-2 my-sm-0" style={{ marginTop: "10px" }} onClick={() => onSubmit()} > <
<button
type="submit"
className="btn btn-primary my-2 my-sm-0"
style={{ marginTop: "10px" }}
onClick={() => onSubmit()}
>
<i className="fas fa-search"></i>
</button>
<button
type="submit"
className="btn btn-primary my-2 my-sm-0"
style={{ marginTop: "10px" }}
onClick={() => onSubmit()}
>
<i className="fas fa-paper-plane"></i>
</button>
onSubmit()}
>
这是“不工作”按钮:
<button
type="submit"
className="btn btn-primary my-2 my-sm-0"
style={{ marginTop: "10px" }}
onClick={() => onSubmit()}
>
<i className="fas fa-search"></i>
</button>
<button
type="submit"
className="btn btn-primary my-2 my-sm-0"
style={{ marginTop: "10px" }}
onClick={() => onSubmit()}
>
<i className="fas fa-paper-plane"></i>
</button>
onSubmit()}
>
唯一的区别是第一个被包装在一个链接标签中以提交搜索,而另一个将提交一封电子邮件以订阅时事通讯,但现在它应该只是触发一个祝酒词
帮助?
另外,我已经尝试了event.preventDefault(不起作用),而且两者的表单格式也完全相同。不要混合使用按钮
type=“submit”
和onClick
处理程序,因为这将提交相关表单并执行任何默认表单提交操作
另外,我已经尝试了event.preventDefault
(不起作用),而且两者都有
格式也完全相同
这不起作用,因为您的onSubmit
回调没有接收到事件对象
将类型更改为“button”,并使用onClick
处理程序进行表单数据提交
<button
type="button" // <-- button type
className="btn btn-primary my-2 my-sm-0"
style={{ marginTop: "10px" }}
onClick={onSubmit}
>
<i className="fas fa-search"></i>
</button>
您还需要将onSubmit
附加到任一元素,使其同时使用事件,这样您就可以对其执行event.preventDefault()
或者
onSubmit={e => onSubmit(e)}
onClick={e => onSubmit(e)}
或
记住实际调用event.preventDefault()
如果由于链接包装还存在其他问题,那么还可以在处理程序中调用
event.stoppropigation()。顺便说一句,它没有包装在链接路由器标签中的是不能正常工作的。但是我尝试了所有可能的解决方案,如果我将类型更改为button并将事件添加到onSubmit,它根本不会提交。如果我将类型保持为submit,并将onSubmit移动到表单标记,也不会提交表单,它只是不做任何事情,甚至控制台中没有错误。@AmberRobertson,嗯,有趣的是,可能还有更多/其他东西干扰了均匀传播。你能提供一个完整的代码示例吗?所以我发现我注释掉了我的toast.configure()行
const onSubmit = e => {
e.preventDefault();
...
}