Реагируйте на кнопку «Запретить» в форме, которую нужно нажать при нажатии кнопки «Возврат»

#reactjs

Вопрос:

У меня есть такой компонент входа в систему :

 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>
            );

        }
    }
 

И когда я нажимаю «Ввод» после редактирования ввода электронной почты, нажимается кнопка «Забыли пароль».

Я хочу, чтобы вместо этого была отправлена форма.

Функция onForgotPassword выглядит следующим образом :

 const changeForm = (v: AuthForm) => (e: React.FormEvent<HTMLButtonElement>) => {
    e.preventDefault();
    setForm(v);
};


<Login onForgotPassord={changeForm(Form.ForgotPassword)} />
 

Ответ №1:

Нашел решение :

 type Props = {
    onForgotPassword: (e: React.FormEvent<HTMLButtonElement> | React.KeyboardEvent) => void;
};

const changeForm = (v: AuthForm) => (e: React.FormEvent<HTMLButtonElement> | React.KeyboardEvent) => {
    if(e instanceof KeyboardEvent amp;amp; e.key === 'Enter'){ 
        return;
    }
    setForm(v);
};