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

React и react-router, как заблокировать выполнение роута?

Подскажите, есть такой код роутера:
function requireTest(nextState, replaceState,cb) {
 // псевдокод  
 Если нет ID новости { 
    cb();
  } 
  иначе {
    не вызываем колбек
  }
}

export default (
	   <Route path="" component={App}>
	   	<IndexRoute component={Index} />
	   	<Route onEnter={requireTest} path="test/(:id/)" component={Test} />
	   </Route>
)


Если использовать cb() в requireTest можно заблокировать выполнение роутера. Роутер будет дожидаться выполнение cb(). Допустим я хочу, чтобы при изменении ссылки c site -> site/test/1 не выполнялось перенаправление. Что происходит внутри кода роутера, когда не вызываешь cb(), какие проблемы с этим могут возникнуть?

И второй вопрос, есть ли способ сделать один общий onEnter, чтобы он выполнялся для всех роутеров? Есть определенный код, который хочется выполнять при изменении ссылки, но чтобы его отлавливать придется каждому роутере ставить onEnter, но в этом тоже есть проблема, при изменении ссылки может выполнится несколько onEnter, может есть какой-то один общий?
Есть общий event browserHistory.listen( location => {}); но там нет доступа к nextState, replaceState,cb
  • Вопрос задан
  • 827 просмотров
Подписаться 1 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    Мидл фронтенд-разработчик
    5 месяцев
    Далее
  • Javascript.ru
    Курс по React
    5 недель
    Далее
  • Нетология
    Fullstack-разработчик на Python + нейросети
    20 месяцев
    Далее
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы
ITK academy Нижний Новгород
от 50 000 до 90 000 ₽
IT ATLAS Москва
от 200 000 до 250 000 ₽
ITK academy Казань
от 50 000 до 90 000 ₽