Подскажите, есть такой код роутера:
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