我刚开始使用mobx并做出反应(这是一个伟大的团队,顺便说一句。)我的商店有点问题。我想异步从现有API获取一些数据,然后使用这些数据来更新我的商店中的一些现有的observable:
class StationStore {
@observable stations = []
loadStations() {
fetch('http://localhost:3000/api/station/getStations')
.then(function(response) { return response.json() })
.then(stations=>this.parseStations(stations));
}
@action parseStations(stations) {
var newStations = stations.map((station)=>{
let s = new Station;
s.id=station.id;
s.name=station.Text;
s.deviceType=station.DeviceType;
return s;
});
this.stations.replace(newStations);
}
}
如您所见,我需要将逻辑划分为两个独立的函数,以便能够访问this.stations
。我试图包含地图并将部分替换为loadStations()
的第二个然后(),但是当我这样做时,我无法访问我的商店,因为 this 在那里是不确定的。
我该如何解决这个问题?
答案 0 :(得分:1)
使用var self = this;
可以解决您的问题
class StationStore {
@observable stations = [];
loadStations() {
var self = this;
fetch('http://localhost:3000/api/station/getStations')
.then(function (response) {
return response.json()
})
.then(stations => {
self.stations.replace(stations.map((station) => {
let s = new Station;
s.id = station.id;
s.name = station.Text;
s.deviceType = station.DeviceType;
return s;
}));
});
}
}