如何异步加载存储构造函数上的 MobX 数据?
How to load MobX data on store constructor, asynchronously?
我正在尝试编写一个 MobX 存储,它在构造函数中异步加载数据。问题是,当我尝试更新 @observable
时,它不会触发更改,因此 React 组件永远不会更新。
那是商店(实际上,setTimeout
是服务器调用):
class MyStore {
@observable isLoading = true;
constructor() {
setTimeout(() => {
this.isLoading = false; // won't update the React component!
}, 1000);
}
}
此组件会阻止应用程序,直到加载完成:
const MyComponent = ({store, children}) =>
store.isLoading ?
<div>Loading, please wait...</div> :
children;
export default inject('store')(MyComponent);
如何在商店构造函数中触发更新?
在提供的代码中,您的组件未标记为观察者,使其成为观察者应该可以解决问题。您可以使用 mobx-react
包提供的 @observer
装饰器来完成。
请注意,您应该使用 observer before inject
我正在尝试编写一个 MobX 存储,它在构造函数中异步加载数据。问题是,当我尝试更新 @observable
时,它不会触发更改,因此 React 组件永远不会更新。
那是商店(实际上,setTimeout
是服务器调用):
class MyStore {
@observable isLoading = true;
constructor() {
setTimeout(() => {
this.isLoading = false; // won't update the React component!
}, 1000);
}
}
此组件会阻止应用程序,直到加载完成:
const MyComponent = ({store, children}) =>
store.isLoading ?
<div>Loading, please wait...</div> :
children;
export default inject('store')(MyComponent);
如何在商店构造函数中触发更新?
在提供的代码中,您的组件未标记为观察者,使其成为观察者应该可以解决问题。您可以使用 mobx-react
包提供的 @observer
装饰器来完成。
请注意,您应该使用 observer before inject