だから私は2店舗、AuthorStore
ありますAuthorStore.author.name
がnullであるかのように私は、それがnull
のプロパティを取得することができないというBookStore
でエラーを取得しておくMobX - あるストアのコンストラクタを別のストアに実行しますか?
import AuthorStore from 'authorStore';
class BookStore {
@observable book = {
authorName: AuthorStore.author.name,
bookTitle: null
}
}
:
class AuthorStore {
constructor() {
// has author.name and is always present in storage
AsyncStorage.getItem('author').then(action((data) => {
this.author = JSON.parse(data);
}));
}
@observable author = null;
}
とBookStore
を。したがって、最初にコンストラクタを実行して値を代入することなく、AuthorStore
からデフォルトのauthor
の値を読み取っています。
AuthorStore
コンストラクタによって割り当てられた値をBookStore
のauthor
にするにはどうすればよいですか?
コンストラクタはおそらくあなたの 'AuthStore'で意図したとおりに動作していますが、操作は非同期です。その結果、' AuthorStore.author'と 'AuthorStore.author.name'は' BookStore'。また、 'AuthorStore.author.name'を書くと、値を逆参照しています。 [プリミティブはそのようには見えません](https://mobxjs.github.io/mobx/best/pitfalls.html#dereference-values-as-lately-as-possible)ので、あなたがそれを必要とするまで、 'AuthorStore.author'を呼び出します。 – Tholle
hmm ...コンストラクタの非同期操作のために返される値が 'null'であることを理解していますが、' BookStore'に値を取得する方法がまだわかりません – Wonka