2
内の反応ですかオートランとが動作するためにコンストラクタ内である必要はあり反応? コンストラクタなしでこの簡単な例を書くことはできますか??MobXの自動実行とコンストラクタ
オートランのコードも正常に動作しますが、console.log(this.expenses)
に変更しても動作しません。何故ですか?
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:あなたは、文字列でそれを入れないで同じ効果を得るためにtoJSまたは
slice
を使用することができます。私はconsole.logを考えて間違いを見ます。 自動実行と反応がデコレータを必要とせず、ExpensesStoreクラスの外で暮らすことができれば、それらを取り出して他のコンポーネントに入れてそこから実行することができます。行動を取って外に出て行く方法はありますか?私はreduxに似た構造を作りたいと思います。ここで私は1つのファイルにアクションを持ち、別のファイルに格納しますか? –@ Igor-Vuk問題はありません!もちろん、MobXは非常に柔軟です。私は個人的に計算結果をそのクラスに保存しますが、アクションを移動します。私はずっと前からプロジェクトでこれをやっていましたが、Reduxの素晴らしい、可変なバージョンのように感じました。 – Tholle
どうすればいいですか?アクションを取り出して別のファイルからディスパッチしますか?あなたが参加したいのですか他に質問がありました。 https://stackoverflow.com/questions/46840028/structure-mobx-project-like-redux 私はこの答えを私の最初の質問の解決策として受け入れます。どうも。 –