que je fais quelque chose comme ceci:actions Cascading pas rendu
import { observable, action } from 'mobx';
export default class DataStore {
@observable pageData:object
@action fetch() {
superagent.get(url1)
.send('got url 1', action((err, results) => {
if (err)
return;
this.pageData = this.pageData || {};
this.pageData.urlData1 = results;
this.fetchAnother();
}));
}
@action fetchAnother() {
superagent.get(url2)
.send('got url 2', action((err, results) => {
if (err)
return;
this.pageData = this.pageData || {};
this.pageData.urlData2 = results;
}));
}
}
Ces actions sont séparés parce que parfois fetchAnother
est appelé par lui-même. J'injecte le magasin dans ma classe de composant React. Lorsque fetch
est appelée, le premier rappel asynchrone enveloppé dans action
met à jour la page et urlData1
est rendu. Puis le 2ème rappel dans fetchAnother
est appelé et s'exécute, mais ne rend pas, et urlData2
ne montrera que si je force un ré-rendu d'une autre manière. Pourquoi, et comment puis-je résoudre ce problème? MobX ne prend pas en charge dynamiquement l'ajout de champs à des objets simples.
Qu'entendez-vous par "observable map"? – cilphex
Même si je fais quelque chose comme ajouter '@observable random: number' au parent, et mettre' this.random = Math.random(); 'à la fin de' fetchAnother', il ne se ré-affiche pas quand il est appelé 'fetch'. – cilphex
Votre composant de réaction est-il décoré avec '@ observateur'? – mweststrate