@IIITRIX

Как добавить class в див по клику?

Нужно чтоб при нажатии на input, к div присваивался еще один класс css
если нажать в другое место экрана, css должен сбрасываться
пробую так, но что то не выходит!
return classNames({
      'exp':  this.state.clicked,
      'noexp':  !this.state.clicked
    });
{this.getClassNames()} onClick={this.setState({clicked: !this.state.clicked})
  • Вопрос задан
  • 97 просмотров
Решения вопроса 1
0xD34F
@0xD34F Куратор тега React
Зачем onClick? - при повторном клике на инпут класс удалится, а клик снаружи инпута вы так не обработаете. Наверное, стоит использовать onFocus и onBlur:

class App extends React.Component {
  state = {
    classes: [ 'bullshit' ],
  }

  onFocus = () => {
    this.setState(({ classes }) => ({
      classes: [ ...classes, 'focus' ],
    }));
  }

  onBlur = () => {
    this.setState(({ classes }) => ({
      classes: classes.filter(n => n !== 'focus'),
    }));
  }

  render() {
    return (
      <div className={this.state.classes.join(' ')}>
        <input onFocus={this.onFocus} onBlur={this.onBlur} />
      </div>
    );
  }
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы