Задать вопрос
@surerever

Как навесить правильно onClick на details?

Всем доброго времени суток.
В коде (или тут) задаю для атрибута open false и при нажатии на details меняю его
this.setState({ details: !this.state.details }). Дело в том, что оно то работает, но при первом нажатии на details он сам не раскрывается. Через отдельную кнопку все работает.
Подробнее:
Если в open стоит false и сам details закрыт (open="false" по дефолту), то при нажатии details не раскрывается, а значение меняется на true. На второй клик раскрывается, значение false.
Если в open стоит trueи сам details открыт (open="true"), то при нажатии details не раскрывается, а значение меняется на false. На второй клик раскрывается, значение true.
  • Вопрос задан
  • 171 просмотр
Подписаться 1 Средний Комментировать
Решения вопроса 1
0xD34F
@0xD34F Куратор тега React
Показ/скрытие содержимого details при клике - это поведение по умолчанию, видимо, оно конфликтует с вашими попытками управлять состоянием details. Отменяйте действие по умолчанию при клике:

toggleDetails = (e) => {
  e.preventDefault();
  this.setState({ details: !this.state.details });
}
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
GeorgeGeorge
@GeorgeGeorge
Студент
Вот так работает как надо
toggleDetails = () => {
    this.setState({
      details: !this.state.details
    });
  };

<details open={this.state.details} onClick={() => this.toggleDetails}>
    <summary>Заголовок</summary>
     Вложение details
</details>
Ответ написан
Ваш ответ на вопрос

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

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