Обращение к объекту класса

class Main extends React.Component {
            login() {
                alert("Войти");
            }
            forgotPassword() {
                alert("Забыли пароль");
            }
            render() {
                return (
                    <div className="LoginForm">
                        <div className="TextForm">
                            <text className="Text">Логин</text>
                            <p><input className="Email" type="email" ref="Email"></input></p>
                        </div>
                        <button onClick={this.forgotPassword}>Забыли пароль?</button>
                        <button onClick={this.login}>Войти</button>
                    </div>);
            }
        };
 .TextForm {
            /*background-color: #000000;*/
            border: solid 1px;
            width: 20vW;
            height: 5vH;
        }
        .Email {
            outline:none;
            border: solid 0px;
        }
        .Email:focus text {
            background-color: red;
        }

Как обратиться к объекту, чтобы изменить стили другого объекта? Чтобы например если нажимаешь на input, то менялся цвет всего блока TextForm.


Ответы (1 шт):

Автор решения: pinchers

При нажатии на input к классу TextForm добавляется bgRed и цвет всего блока TextForm меняется, а если убрать курсор с input, то класс bgRed убирается.

class Main extends React.Component {
  
  state = {
    background: false,
  }
  focus = () =>{
    this.setState({
      background: true
    })
  }

  blur = () =>{
    this.setState({
      background: false
    })
  }

  render() {
    debugger;
      return (
          <div className='LoginForm'>
              <div className = {`TextForm ${this.state.background && 'bgRed'}`}>
                  <text className='Text'>Логин</text>
                  <p><input className='Email' type="email" ref="Email" onFocus={this.focus} onBlur={this.blur} ></input></p>
              </div>
              <button>Забыли пароль?</button>
              <button>Войти</button>
          </div>);
  }
};
.TextForm {
  /* background-color: #000000; */
  border: solid 1px;
  width: 20vW;
  
}
.Email {
  outline:none;
  border: solid 0px;
}

.bgRed{
  background-color: red;
}

→ Ссылка