当从API检索数据以在启用MobX的React页面上呈现时发生超时错误时,我看到的是显示上一次成功查询的结果,而不是所需的数据(或空数据)。具体来说,这些步骤是:
- 输入需要一个项目ID才能从数据库检索结果并将查询结果置于显示状态的页面
- 返回,进入带有新ID的同一页面,此请求超时。我没有看到任何错误或错误,而是看到了步骤1的结果,即错误的项目数据。
这是在整个网站范围内发生的,我需要可以在任何地方实施的修复程序。以下是我为解决此问题而在一页上编写的一些代码,但是此模式需要复制到应用程序的每个商店中。我不确定这是否是正确的解决方案,因为它可以通过跟踪项ID并在发生更改时清空所有可观察对象来工作-感觉就像MobX应该做的一样,所以我担心我的解决方案是反模式。 / p>
是否有比我在下面介绍的解决方案更好的解决方案?
class SupplierUtilizationStore {
@observable key = 0; //supplierId
utilizationSearchStore = new SearchStateStore();
@observable utilizationSearchResults = [];
@observable selectedChartType = 'ByMonth';
@observable supplierUsageForChart = {};
@observable utilizationSummaryData = {};
constructor(rootStore,dataLayer) {
this.rootStore = rootStore;
rootStore.supplierStore = this;
this.db = dataLayer;
this.initUtilizationSearchStore();
}
initUtilizationSearchStore() {
this.utilizationSearchStore.searchResultsTotalUnitCost = observable({});
this.utilizationSearchStore.searchResultsTotalCost = observable({});
this.utilizationSearchStore.searchResultsTotalQty = observable({});
this.utilizationSearchStore.supplierId = observable({});
}
//Call this in componentDidmount()
@action
initStore(key) {
if (key !== this.key) {
this.utilizationSearchStore = new SearchStateStore();
this.initUtilizationSearchStore();
this.utilizationSearchResults = [];
this.selectedChartType = 'ByMonth';
this.supplierUsageForChart = {};
this.utilizationSummaryData = {};
this.utilizationSearchStore.supplierId = key;
this.key = key;
}
}
...
}