Я очень новичок в этом. Ниже код, помогите
При одиночном щелчке курсор ввода не указывает на текстовое поле, при двойном щелчке по текстовому полю появляется курсор ввода. Также, если я добавляю заполнитель, я не могу ничего вводить.
export default class Login extends Component {
state = {
UserID: "",
Password: ""
};
UserIdchangeHandler = text => {
this.setState({
UserID: text.target.value
});
};
PasswordchangeHandler = text => {
this.setState({
Password: text.target.value
});
};
render() {
return (
<div className = "backgroundImg">
<span>
<FontAwesomeIcon icon = {faUserTie} size = "lg" />
</span>
<input
type = "text"
onChange = {text => {
this.UserIdchangeHandler(text);
}}
/>
<br />
<span>
<FontAwesomeIcon icon = {faKey} size = "lg" />
</span>
<input
type = "password"
onChange = {text => {
this.UserIdchangeHandler(text);
}}
/>
<br />
<button>Login</button>
</div>
);
}
}



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


import React, {Component} from 'react';
import "./login.css";
import { library, text } from '@fortawesome/fontawesome-svg-core'
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'
import { faUserTie, faKey, } from '@fortawesome/free-solid-svg-icons'
library.add(faUserTie)
export default class Login extends Component{
state = {
UserID:"",
Password:""
}
UserIdchangeHandler=(text)=>{
this.setState({
UserID:text.target.value
})
}
PasswordchangeHandler=(pass)=>{
this.setState({
Password:pass.target.value
})
}
render() {
return (
<div className = "backgroundImg">
<span>
<FontAwesomeIcon icon = {faUserTie} size = "lg"></FontAwesomeIcon>
</span>
<input type = "text" onChange = {(text)=>{this.UserIdchangeHandler(text)}} ></input>
<br/>
<span>
<FontAwesomeIcon icon = {faKey} size = "lg"></FontAwesomeIcon>
</span>
<input type = "password" onChange = {(pass)=>{this.PasswordchangeHandler(pass)}}></input>
<br/>
<button>Login</button>
</div>
);
}
}
Происходит то, что у вас есть обработчик onChange, но вы не установили значение на входе.
Если вы добавляете обработчик onChange, вам нужно добавить свойство value
<input
type = "text"
value = {this.stateUserId} // You're missing this here
onChange = {evt => {
this.UserIdchangeHandler(evt);
}}
/>
You can learn more about controlled/uncontrolled on the React Docs here. In your case you're trying to create a controlled inputhttps://reactjs.org/docs/forms.html#controlled-components
Примечание:
В своем onChange вы пометили свойство text. Но лучше звать event
<input
type = "text"
value = {this.state.UserID} // you are missing value here.
onChange = {text => {
this.UserIdchangeHandler(text);
}
}
/>
и то же, что и поле ввода пароля.
Я сделал изменение, как вы предложили. Тем не менее, мне нужно дважды щелкнуть текстовое поле, если я хочу начать печатать в текстовом поле.
Проблема решена сейчас. Проблема была с Css класса. Z-индекс был установлен на более низкое значение. Здесь мне помогло увеличение z-индекса.
Я сделал изменение, как вы предложили. Тем не менее, мне нужно дважды щелкнуть текстовое поле, если я хочу начать печатать в текстовом поле.