У меня есть компонент класса реакции, который имеет в своем состоянии объект параметра типа «учетные данные»:
{пользователь: '', пароль: ''}.
Я добавляю новые «учетные данные» в массив «credentialList» также в состоянии и вывожу его. Я пытаюсь заставить программу выдавать ошибку, когда я пытаюсь ввести новые «учетные данные» с пользователем, который уже существует в списке. Я дал каждому «мандату» значение ключа, равное пользователю. К сожалению, это не сработало. Я пометил проблемный оператор if в ** **. Спасибо любому помощнику. Мой код:
state = {
user: '',
password: '',
clicked: false,
credentialsList: []
}
userChangedHandler = (event) => {
this.setState( { user: event.target.value })
}
passwordChangedHandler = (event) => {
this.setState( { password: event.target.value })
}
userSubmitHandler = () => {
if(this.state.user === '' || this.state.password === ''){
alert('Please enter username and password!');
}
const credential = {user: this.state.user , password: this.state.password};
**if(this.state.credentialsList.length !== 0 && this.state.credentialsList.contains(credential)){
alert('Enter New')
}**
else {
let newList = [...this.state.credentialsList, {user: this.state.user, password: this.state.password }];
this.setState({clicked: true, user: '', password: '', credentialsList: newList})
}
}
formEraseHandler = () => {
if(this.state.credentialsList.length === 0){
alert('The User List is Empty!')
}
else {
let newList = [];
this.setState({ credentialsList: newList, user:'', password:''});
}
}
render() {
return(
<div>
<Form
credentialsList={this.state.credentialsList}
user={this.state.user}
password={this.state.password}
clicked={this.state.clicked}
userChanged={(event) => this.userChangedHandler(event)}
passwordChanged={(event) => this.passwordChangedHandler(event)}
addButtonClicked={this.userSubmitHandler}
resetButtonClicked={this.formEraseHandler}/>
<CredentialsList credentials={this.state.credentialsList}/>
</div>
)
}
}