为 ReactJS 组件和 MobX 正确获取数据

Proper data fetching for ReactJS components and MobX

在 MobX 中获取(和发布)数据的首选方式是什么?包括在外部数据调用的 onLoad 期间制作微调器的选项。

  1. 全部在商店中使用@actions,使组件尽可能愚蠢,例如以尽可能多的无状态功能组件为目标。
  2. 在组件中,例如通过使用 ComponentDidMount 或 WillMount
  3. 通过使用高阶组件

根据 mobx documentation,动作应该在 mobx 动作中完成,因此在您描述的第一个选项所建议的商店中。

他们提供的示例完全符合您的用例:

@action    createRandomContact() {
    this.pendingRequestCount++;
    superagent
        .get('https://randomuser.me/api/')
        .set('Accept', 'application/json')
        .end(action("createRandomContact-callback", (error, results) => {
            // ^ Note: asynchronous callbacks are separate actions!
            if (error)
                console.error(error);
            else {
                const data = JSON.parse(results.text).results[0];
                const contact = new Contact(this, data.dob, data.name, data.login.username, data.picture)
                contact.addTag('random-user');
                this.contacts.push(contact);
                this.pendingRequestCount--;
            }
        }));
}