【发布时间】:2018-01-02 17:28:06
【问题描述】:
我最近开始使用 MobX 开展一个项目。我以前从未使用过 MobX,所以我对一件事感到很困惑。
MobX 商店的职责是什么?
1) MobX @action, @computed 是否应该返回 html/jsx?在官方 10 分钟 MobX 教程https://mobx.js.org/getting-started.html 中有一个@computed get report。这只是一个例子吧?
@computed get report() {
if (this.todos.length === 0)
return "<none>";
return `Next todo: "${this.todos[0].task}". ` +
`Progress: ${this.completedTodosCount}/${this.todos.length}`;
}
2) 在@action 中调用API 是不是一个好主意?像这样?
@action
submitProfileInformation = params => {
return post("apiendpoint", {
body: params
}).then(resp => {
this.firstName = resp.first_name;
return "ok";
});
};
我来自 redux 世界,我对它的看法 store 应该只存储和改变值。动作会对组件做出反应,让他们知道某些事情发生了变化,以便他们重新渲染。对吗?
【问题讨论】:
-
MobX 与 html/jsx 无关。这是一个普通的 javascript 商店。是的,可以在
@action中调用 API :) 只需记住您需要将响应绑定到存储范围内的@observable。
标签: javascript reactjs mobx