在没有console.log的情况下,Chrome Devtools在setState上崩溃

时间:2018-10-22 23:05:58

标签: reactjs google-chrome google-chrome-devtools

我正在开发一个棋盘游戏并测试两个玩家,我在componentDidMount中有这段代码:

window.swap = () => {
    this.setState({
        self: rotate(this.state.game[0].players, this.state.game[0].players.indexOf(this.state.self))[1]
    })
}

这基本上是从玩家列表中选择下一位玩家,并将self设置为该玩家,以便我可以模拟该玩家。

当我第一次调用swap时,它可以正常工作,但是当我再次调用它时,它会使页面崩溃。 但是,如果我之前添加了console.log,就像这样:

window.swap = () => {
    console.log('what?')

    this.setState({
        self: rotate(this.state.game[0].players, this.state.game[0].players.indexOf(this.state.self))[1]
    })
}

它每次都能正常工作。即使我执行了一个简单的循环for(let i=0; i<100; i++) swap(),它也可以正常工作,并打印“什么?”。 100次。

如果我关闭DevTools并添加类似的内容

setTimeout(() => {
    window.swap()
    window.swap()
}, 5000)

console.log上带有或不带有swap的情况下,它都可以正常工作。什么?

编辑:

经过测试:

  • Chrome 70(崩溃)
  • Chrome Canary(72),Chromium,Firefox,Edge(确定)

显然,此错误已在下一版Chrome中修复

1 个答案:

答案 0 :(得分:0)

这是Chrome的错误,该错误已在即将发布的版本中修复。如果有人可以将我指向问题页面或其他内容,我很想知道是什么原因造成的。