0

我正在尝试使用 MobX 创建 Otello 游戏。所以我有反应去寻找瓦片的变化,然后相应地更新其他瓦片。

所以在下面的代码中,我跑去bumpRandom()换另一个瓦片看看效果。但是这会进入循环函数,因为reaction总是运行。如何让它停止在 a 中观察reaction

class OtelloBoard {
  @observable cells = [];

  constructor() {
    for (i = 0; i< SIZE*SIZE; i++) {
      this.cells.push(new Cell())
    }
    reaction(
      () => this.cells.map( cell => cell.status ),
      status => {
        this.bumpRandom()
        console.log('Status has changed' + status)
      }
    )
  }

  @action bumpRandom() {
    this.cells[45].bump()
  }
}

我试过untracked(() => this.bumpRandom())了,但这也不起作用。

4

1 回答 1

1

在讨论了这个 MobX issue之后,我找到了不使用反应的解决方案。我正在使用@action,并让它运行onClick()

class OtelloBoard {
  @observable cells = [];

  constructor() {
   for (i = 0; i< SIZE*SIZE; i++) {
  this.cells.push(new Cell())
}
}

 @action bumpRandom() {
  this.cells[45].bump()
 } 
}
于 2016-09-04T04:09:38.713 回答