reactjs - React防止表单中的按钮在点击返回时被点击
问题描述
我有一个这样的登录组件:
type Props = {
onForgotPassword: (e: React.FormEvent<HTMLButtonElement>) => void;
};
class Login extends React.Component<Props, State> {
constructor(props: Props) {
super(props);
}
handleSubmit(e: React.FormEvent<HTMLFormElement>) {
e.preventDefault();
...
}
render() {
return (
<div
>
<Form
onSubmit={this.handleSubmit}
layout="vertical"
>
<input
type="email"
/>
<button
type="button"
onClick={this.props.onForgotPassword}
>
Forgot password ?
</button>
<button
type="submit"
>
<span>Submit</span>
</button>
</Form>
</div>
);
}
}
当我在编辑电子邮件输入后按 Enter 键时,单击了忘记密码的按钮。
我希望提交表单。
onForgotPassword 函数如下所示:
const changeForm = (v: AuthForm) => (e: React.FormEvent<HTMLButtonElement>) => {
e.preventDefault();
setForm(v);
};
<Login onForgotPassord={changeForm(Form.ForgotPassword)} />
解决方案
找到解决方案:
type Props = {
onForgotPassword: (e: React.FormEvent<HTMLButtonElement> | React.KeyboardEvent) => void;
};
const changeForm = (v: AuthForm) => (e: React.FormEvent<HTMLButtonElement> | React.KeyboardEvent) => {
if(e instanceof KeyboardEvent && e.key === 'Enter'){
return;
}
setForm(v);
};
推荐阅读
- c++ - 如何使用 libclang 处理 if init 语句(c++17)
- django - 使用 django tables2 和 django_filters 时如何过滤连接的值
- google-api - 谷歌日历 API 配额:千人使用一个谷歌账户
- azure - 应用自定义域后,Azure 上的 Web 应用加载缓慢
- c++ - 使用 snappy 获取未定义的引用错误
- ios - iOS 中的应用内评分功能及其限制
- python - Python的set数据类型数据的内容是否会被排序
- ajax - 在 laravel 中使用模态引导显示特定数据
- python - 尝试使用 Python 中的 Scapy 模块更改 DNS 数据包中的“rdata”时出错
- c - C为什么只有在没有星号(*)的情况下才会打印指向同一个变量的2个指针