Это стандартное поведение для форм обновления страницы после отправки событий. Чтобы остановить это, вы можете добавить event.preventDefault()
handleSubmit = event => {
event.preventDefault()
console.log(event.target.firstName.value); //get value from input with name of firstName
};
В Redux-Forms, чтобы получить объект values
и не обновлять страницу, мы должны использовать обработчик событий, который был создан для нас с помощью Redux-формы. Он создается, когда мы передаем реквизит onSubmit таким образом компоненту Form:
<ContactRForm onSubmit={this.submit} />
Интересно, что этот обработчик теперь доступен через реквизит handleSubmit()
, который, как я ожидаю, имеет собственный встроенный event.preventDefault()
.
Попробуйте добавить это к коду компонента Form:
import React from "react";
import { Field, reduxForm } from "redux-form";
class ContactForm extends React.Component {
render() {
return (
<form onSubmit={this.props.handleSubmit}>
<div>
<label htmlFor="firstName">First Name</label>
<Field name="firstName" component="input" type="text" />
<label htmlFor="lastname">Last Name</label>
<Field name="lastname" component="input" type="text" />
</div>
<button type="submit">Submit</button>
</form>
);
}
}
const ContactRForm = reduxForm({
// a unique name for the form
form: "contact"
})(ContactForm);
export default ContactRForm;
Теперь происходит та же функциональность, что и у исходной функции submit
, и страница не обновляется. :)