Я работаю с ReactJS и следую учебному пособию для создания страницы входа, в примере код очень интуитивно понятен и универсален, я пытаюсь эмулировать функцию для получения значений из входов электронной почты и пароля, но когда я пишу текст сразу заменить на пустую строку.
Я уже прошел похожие посты и обнаружил, что логика более сложна, и в этом нет необходимости. Я хотел бы иметь что-то простое, как это DEMO .
Я пытался добавить идентификаторы в разные компоненты, чтобы проверить, работает ли он, я не могу заставить его работать.
Это код:
class LoginLayout extends Component {
constructor(props) {
super(props);
this.state = {
email: "",
password: ""
};
}
onUserLogin() {
if (this.state.email !== "" && this.state.password !== "") {
this.props.loginUser(this.state, this.props.history);
}
}
handleChange = event => {
this.setState({
[event.target.id]: event.target.value
});
}
render() {
return (
<Fragment>
<Form>
<Label className="form-group has-float-label mb-4" id="inputEmail">
<Input type="email"
value={this.state.email}
onChange={this.handleChange}
/>
</Label>
<Label className="form-group has-float-label mb-4">
<Input type="password" id="inputPassword"
value={this.state.password}
onChange={this.handleChange}
/>
</Label>
<div className="d-flex justify-content-between align-items-center">
<NavLink to={`/forgot-password`}>
<IntlMessages id="user.forgot-password-question" />
</NavLink>
<Button
color="primary"
className="btn-shadow"
size="lg"
onClick={() => this.onUserLogin()}
>
<IntlMessages id="user.login-button" />
</Button>
</div>
</Form>
</Fragment>
);
}
}
const mapStateToProps = ({ authUser }) => {
const { user, loading } = authUser;
return { user, loading };
};
export default connect(
mapStateToProps,
{
loginUser
}
)(LoginLayout);