GreyCrew
@GreyCrew
Full-stack developer

Как правильно устроить задержку выполнения функций?

При загрузке страницы я получаю id компонента и рендерю его,
Но слева есть меню с кнопками, при нажатии на которые у меня меняется роутинг и срабатывает функция изменения компонента(в state записываю новый this.props.params.id ), так вот эта функция срабатывает раньше, чем поменяется роутинг.

Я исправил это костылем setTimeout с минимальной задержкой.
Но хочется знать, как правильно нужно в такой ситуации делать?

В рендере :
<Link to={'/temp/'+props.id+'/'+item.id} onClick={props.handleChange} className="btn project-list-item" key={i}>{item.name}</Link>

Сама функция:
handleChange(){
    let _this = this;
    setTimeout(function() {
      _this.setState({currentId : _this.props.params.id});
    }, 4);
  }
  • Вопрос задан
  • 194 просмотра
Пригласить эксперта
Ответы на вопрос 1
maxfarseer
@maxfarseer
https://maxpfrontend.ru, обучаю реакту и компании
Скорее всего, где-то в коде проблема...
Но если читать ваш вопрос буквально, то кроме как setTimeout есть еще setInterval и requestAnimationFrame (все трое вам не подходят).

Обычно же, если хочется, чтобы функция выполнилась после получения какого-то результата, используют "коллбэки".
Ответ написан
Ваш ответ на вопрос

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

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