我正在使用react-router并且具有以编程方式转到另一个页面的功能:
transitionTo(url) {
hashHistory.push(url)
}
它工作正常,但我很困惑,因为如果转换后有更多的代码,那么代码将继续运行。我希望在过渡后完成执行。
即。以下代码将转换为每个指定的路由,最后是/ flib
transitionTo('/floob')
transitionTo('/flub')
transitionTo('/flib')
为什么会这样?
我原本预计它会直接过渡到/ floob并且没有达到/ flub或/ flib
答案 0 :(得分:1)
没有什么可以阻止执行下一行代码。
首先,transitionTo()
只是一个普通的函数调用。为什么它会阻止执行下一行,除非它抛出异常?
如果您期望历史转换导致某种页面重新加载。它不是。 HistoryAPI
和普通hashchange
(如您的情况)都不会这样做。也不是预期的行为。因为你确实希望保留你所处的背景。
即使你坚持location
api,实际上改变了浏览环境,也不会阻止下一行的执行。
console.log('before');
window.location.assign('https://google.com')
window.location.assign('https://stackoverflow.com')
window.location.assign('https://example.com')
console.log('after');