Реагировать: получать элемент и применять onClick после рендеринга

#reactjs

#reactjs

Вопрос:

Я использую react с загрузочной темой, которая использует jquery.

Проблема в том, что выпадающее меню bootstraps и reacts onClick не работают вместе.

Мое решение заключается в том, что я применяю обработчик onClick с помощью jQuery в методе componentDidUpdate() моего компонента. Это работает, как и ожидалось.

Это не работает:

  <ul className="dropdown-menu pull-right">
     <li id="logout-button">
         <a href="#" onClick={this.logout.bind(this)}><i></i> Logout</a>
     </li>
 </ul>
  

Это работает:

 public componentDidUpdate() {
  // workaround: problems with bootstraps dropdown onclick event
  $('#logout-button').click(() => {
      this.logout();
      return false;
  });
}
  

Но как я могу сделать это в чистом react?

Как я могу получить свой элемент dom в react и применить прослушиватель onClick после рендеринга?

Комментарии:

1. Вы можете использовать React refs для решения этой проблемы, позволяя фреймворку выполнять часть управления. Не забудьте удалить прослушиватели при размонтировании

Ответ №1:

Используя React refs , вы можете получить ссылку на элементы DOM внутри компонента.

При привязке событий componentDidMount не забудьте удалить своих внешних слушателей componentWillUnmount .