Ich versuche MobX zu verwenden, um ein Otello-Spiel zu erstellen. Also habe ich eine Reaktion, um nach Kacheln zu suchen und dann andere Kacheln entsprechend zu aktualisieren.Mobx Reaktion instabil, zyklische Funktion
Also im Code unten lief ich bumpRandom()
, um eine andere Kachel zu ändern, um den Effekt zu sehen. Aber dann geht das in zyklische Funktion, weil reaction
immer ausgeführt wird. Wie bekomme ich es in einer reaction
aufhören zu beobachten?
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()
}
}
Ich versuchte untracked(() => this.bumpRandom())
aber das funktioniert auch nicht.
So jetzt, dass jedesmal, wenn eine Zelle ändert laufen wird. Da es auch eine Zelle verändert, wird es sich endlos selbst nennen. Sie müssen in Ihrer Reaktion etwas Logik hinzufügen, um sicherzustellen, dass nur bumpRandom aufgerufen wird, wenn sich die initiierende Zelle ändert, und nicht die resultierenden Änderungen. –