Я пытаюсь реализовать самые базовые функции переключения ввода пароля в форме. Проще говоря, я хотел бы, чтобы пользователь скрывал или отображал пароль при его вводе.
Я работаю с React, а Semantic UI React является CSS-фреймворком. Это довольно простая задача, но у меня возникли проблемы с тем, что элемент icon не реагирует на изменения состояния. Чтобы быть точным, соответствующий класс CSS для значка изменяется с eye
на eye slash
, как и ожидалось. Однако визуализированный значок не реагирует на это изменение состояния и остается тем же глазом, а не косым глазом. Как ни странно, атрибут type
этого поля ввода изменяется с text
на password
и отображает правильную форму ввода (то есть скрытый или отображаемый пароль). Итак, что дает?
Ниже приведен фрагмент кода компонента. Я также включил изображение отрендеренной формы с соответствующими заполненными полями.
Изменить форму пароля
import React, { Component } from 'react';
import PropTypes from 'prop-types';
import { Form, Icon, Input } from 'semantic-ui-react';
const styles = {
//...
};
class PasswordField extends Component {
state = {
showPassword: false,
};
onTogglePassword = () =>
this.setState(prevState => ({
showPassword: !prevState.showPassword,
}));
render() {
const { showPassword } = this.state;
const { name, value, label, onChange } = this.props;
return (
<Form.Field style={styles.formField}>
<label style={styles.label}>{label}</label>
<Input
style={styles.input}
type={showPassword ? 'text' : 'password'}
name={name}
value={value}
onChange={onChange}
icon={
<Icon
name={showPassword ? 'eye slash' : 'eye'}
link
onClick={this.onTogglePassword}
/>
}
/>
</Form.Field>
);
}
}
PasswordField.propTypes = {
//...
}
export default PasswordField;
Визуализированное изображение формы
![enter image description here](https://i.stack.imgur.com/o8n9O.png)