mobx反应不稳定,循环函数

时间:2016-08-31 19:08:53

标签: reactive-programming mobx

我试图使用MobX创建一个Otello游戏。所以我反应寻找瓷砖更改,然后相应地更新其他瓷砖。

因此,在下面的代码中,我运行bumpRandom()来更改另一个磁贴以查看效果。但是这会进入循环函数,导致reaction始终运行。如何让它停止在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()),但这也不起作用。

1 个答案:

答案 0 :(得分:1)

this 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()
 } 
}