だから私は2つの店を持っていますAuthorStore
:
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
:
import AuthorStore from 'authorStore';
class BookStore {
@observable book = {
authorName: AuthorStore.author.name,
bookTitle: null
}
}
がnullであるかのように、のBookStore
プロパティを取得できないというエラーが発生し続けます。したがって、値を割り当てるために最初にコンストラクターを実行せずに、からデフォルト値を読み取ります。null
AuthorStore.author.name
author
AuthorStore
ローカルストレージに存在する場合に値を取得し、それをオブザーバブルに割り当てるのを待つとmobx-utils
fromPromise
思われる新しいものに出くわしたので、別のストアから呼び出すことができます。author
AsyncStorage
author
null
fromPromise
最初にを使用AuthorStore
して値をログに記録しようとしましたが、コンソールにauthor
Got と表示され、パーツに関しては通常のエラーが表示されます。undefined
null
BookStore
AuthorStore.author
アップデート:
class AuthorStore {
@observable author = null;
@computed get theAuthor() {
authorPromise = fromPromise(AsyncStorage.getItem('author').then(data => JSON.parse(data)));
// combine with when..
when(
() => authorPromise.state !== "pending",
() => {
console.log("Got Author", authorPromise.reason || authorPromise.value) // This runs, and returns author
console.log("Got Name", authorPromise.reason || authorPromise.value.name) // This runs, and returns name
return authorPromise.value; // This doesn't get returned in BookStore when calling this computed
}
);
}
}
class BookStore {
@observable book = {
authorName: AuthorStore.theAuthor.name, // doesn't get computed returned value from promise
bookTitle: null
}
}
計算された関数fromPromise
によって割り当てられた値を取得して、約束された値をunderに返すにはどうすればよいですか?AuthorStore
theAuthor
authorPromise
BookStore
authorName