J'ai 2 magasins: UserStore et TodoStore. Pour aller chercher les todos, j'ai besoin de connaître l'identifiant de mon utilisateur connecté.Attendre les données asynchrones d'un autre magasin mobx
Cela fait partie de mon 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;
})
}
}
ce qui est le constructeur de mon 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();
}
Le problème ici est que je reçois une erreur, car au moment d'appeler cela le currentUser est toujours nul.
Voilà comment je combine mes magasins:
const routing = new RouterStore();
const ui = new UiStore();
const users = new UserStore(ui);
const todos = new TodoStore(users);
const stores = {
routing,
ui,
users,
todos,
}
Qu'est-ce que je fais mal? Comment puis-je savoir quand l'observateur currentUser est disponible?
oh ouais! Merci! pourquoi n'ai-je pas comprendre moi-même: D – user2030592