У меня есть 2 магазина: UserStore и TodoStore. Для получения задач мне нужно знать идентификатор моего вошедшего в систему пользователя.
Это часть моего UserStore
export default class UserStore {
@observable currentUser = null;
@observable loading = false;
constructor() {
this.subscribe();
}
@action subscribe = () => {
this.loading = true;
firebase.auth().onAuthStateChanged((user) => {
if(user) {
this.setCurrentUser(user);
} else {
this.unsetCurrentUser();
}
this.loading = false;
})
}
}
а это конструктор моего TodoStore
constructor(users) {
this.users = users;
console.log(this.users.currentUser) //null
this.storageRef = firebase.storage().ref('files/todos');
this.todosRef = firebase.database().ref(`todos/${this.users.currentUser.uid}`);
this.filesRef = firebase.database().ref(`files/${this.users.currentUser.uid}/todos`);
this.logger();
}
Проблема здесь в том, что я получаю сообщение об ошибке, потому что в момент вызова этого currentUser все еще равен нулю.
Вот как я комбинирую свои магазины:
const routing = new RouterStore();
const ui = new UiStore();
const users = new UserStore(ui);
const todos = new TodoStore(users);
const stores = {
routing,
ui,
users,
todos,
}
Что я делаю не так? Как узнать, когда доступен наблюдаемый объект currentUser?