Sie Autorun und Reaktion innerhalb des Konstruktor sein müssen, um zu arbeiten? Kann ich dieses einfache Beispiel ohne Konstruktor schreiben?MobX Autorun und Reaktion innerhalb Konstruktor
Auch der Code, den ich in der Autorun haben läuft normal, aber wenn ich es console.log(this.expenses)
ändern funktioniert es nicht. Warum das?
import { observable, action, computed, useStrict, autorun, reaction } from 'mobx'
useStrict(true)
class ExpensesStore {
@observable.shallow expenses = []
@action addExpense = (expense) => {
this.expenses.push(expense)
}
@computed get getExpense() {
if(this.expenses.length > 0) {
return `This is computed from ${this.expenses[0] + this.expenses[1]}`
}
}
constructor() {
autorun(() => {
console.log(`${this.expenses}`)
})
reaction(
()=>this.expenses.map(expense => expense), expense => console.log(expense)
)
}
}
const store = window.store= new ExpensesStore()
export default store
Thx Tholle. Ich sehe meinen Fehler in Anbetracht von console.log. Wenn also Autorun und Reaktion keine Dekoratoren benötigen und außerhalb des Klassen-Ausgabenspeichers leben können, kann ich sie herausnehmen, sie in eine andere Komponente einfügen und sie von dort aus ausführen. Gibt es eine Möglichkeit, Maßnahmen zu ergreifen und zu berechnen? Ich möchte eine Struktur ähnlich wie Redux machen, wo ich Aktionen in einer Datei haben könnte, in einer anderen speichern? –
@ Igor-Vuk Kein Problem! Absolut, MobX ist sehr flexibel. Ich würde die Berechnungen für die Klassen in diesem Fall persönlich behalten, aber die Aktionen verschieben. Ich habe das selbst vor nicht allzu langer Zeit in einem Projekt gemacht und es fühlte sich an wie eine nette, veränderbare Version von Redux. – Tholle
Wie würde ich das tun, die Aktionen ausführen und sie aus einer anderen Datei versenden? Ich habe eine andere Frage gestellt, wenn Sie mitmachen möchten. https://stackoverflow.com/questions/46840028/structure-mobx-project-like-redux Ich werde diese Antwort als eine Lösung für meine erste Frage akzeptieren. Danke. –