Мне нужна помощь с управлением состоянием в моем Chat-приложении.
Описание:
Я пытаюсь отобразить имя пользователя, введенное из компонента UserModal
, в мой ChatScreen
составная часть. Я использую функцию onChange
внутри UserModal
, и я использую оператор switch case
для проверки формы. Затем установите состояние с именем в виде массива и присвойте значение имени следующим образом:
UserModal. js
onChange = e => {
e.preventDefault();
const { name, value } = e.target;
let formError = this.state.formError;
switch (name) {
case 'userName':
formError.userName =
value.length < 3 ? 'minimum 3 characters required' : '';
break;
default:
}
this.setState({ formError, [name]: value }, () =>
console.log(this.state)
);
};
функция onSubmit
onSubmit = (e) => {
e.preventDefault();
if (formValid(this.state)) {
Axios.post('http://localhost:5000/api/authenticate').then(
(res) => {
if (res.data.isSuccessful === true) {
alert('Your username is: ' + this.input.value);
this.close();
} else {
alert('Error Message: ' + res.data.ErrorMessage);
}
}
);
} else {
alert(
'Error message: Please enter a username with a minimum of 3 characters'
);
}
};
Форма
<form action="Main.js" className="form-inside-input" onSubmit={this.onSubmit} noValidate>
<label>Username:</label>
<input
className={formError.userName.length > 0 ? "error" : null}
type="text"
placeholder="Enter username"
name="userName"
onChange={this.onChange}
ref={(input) => (this.input = input)}
noValidate
></input>
{formError.userName.length > 0 && <span>{formError.userName}</span>}
<Button
type="submit"
positive
icon="checkmark"
labelPosition="right"
content="Let me in!"
onClick={() => {
this.onSearch();
}}
/>
</form>;
Цель:
Моя цель - взять то, что пользователь вкладывает в поле username в модальном окне с отображением «{userName} присоединился к чату». где userName
заменяется вводом пользователя в компоненте ChatScreen. js внутри фрагментов пользовательского интерфейса Semanti c.
Github Link: https://github.com/George-Jindo/chat-app