0

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())ましたが、それもうまくいきません。

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 に答える