react-router为什么代码在转换后继续执行?

时间:2016-08-01 05:26:44

标签: reactjs react-router

我正在使用react-router并且具有以编程方式转到另一个页面的功能:

  transitionTo(url) {
    hashHistory.push(url)
  }

它工作正常,但我很困惑,因为如果转换后有更多的代码,那么代码将继续运行。我希望在过渡后完成执行。

即。以下代码将转换为每个指定的路由,最后是/ flib

transitionTo('/floob')
transitionTo('/flub')
transitionTo('/flib')

为什么会这样?

我原本预计它会直接过渡到/ floob并且没有达到/ flub或/ flib

1 个答案:

答案 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');