Я пытаюсь использовать MobX для создания игры Otello. Поэтому у меня есть реакция на поиск изменений в плитке, а затем обновление других плиток.mobx реакция нестабильная, циклическая функция
Итак, в приведенном ниже коде я запустил 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())
, но это не работает.
Так прямо сейчас, что будет работать каждый раз, когда изменения в клетках. Поскольку он также изменяет ячейку, она будет продолжать бесконечно называть себя. Вы должны добавить логику в свою реакцию, чтобы убедиться, что она вызывает только bumpRandom при изменении исходной ячейки, а не в результате изменений. –