Код вызывает API, который доставит мне гонки дорожки через событие, которое захватывает его TrackID и получает соответствующие гонки этой дорожки, но мне нужны эти данные для сохранения, так как когда я нажимаю наотслеживать не один раз повторные вызовы в службе, что не является оптимальным.
**Method with API call API**
raceTrackRequest(data){
this.getConfiguration();
const url = this.baseURL + 'BusRace/GetRacesTrack';
const requestJSON = {
DGSReq: {
InParams: {
LogonSessionID: 1,
ProfileID: 1,
TrackID: data.id,
RaceDate: this.actualDate
}
}
};
axios.post(url, requestJSON)
.then((response) => {
AppDispatcher.dispatch({
type: ActionTypes.GET_RACE_TRACK,
data: {...response.data.DGSResp, ...{TrackID: data.id}}
});
})
.catch((error) => {
console.log(error);
});
}
**Store **
getInitialState() {
return {
racesTrack: {
Races: []
}
};
}
reduce(state, action) {
let newState = Object.assign({}, state);
switch (action.type) {
case ActionTypes.GET_RACE_TRACK:
newState.selectedOptions.track = action.data.TrackID;
newState.racesTrack = action.data;
break;
default:
newState = state;
}
return newState;
}
**Component**
static getStores() {
return [ConfigStore, PlayerStore];
};
static calculateState() {
const data = ConfigStore.getState();
return {
data: data
};
};
componentDidMount() {
let params = {...this.state, ...{actionType: ActionTypes.LOAD_CONFIG}};
ActionCreators.actionTrigger(params);
}
handleClick(actionType, id, name, post, distance, purse, surface, trackcond, WagerTypes, entry) {
const params = {
actionType: actionType,
id: id,
name,
post: post,
distance: distance,
purse: purse,
surface: surface,
trackcond: trackcond,
WagerTypes: WagerTypes,
entry: entry
};
ActionCreators.actionTrigger(params);
this.setState ({
raceID: id,
name,
post: post,
distance: distance,
purse: purse,
surface: surface,
trackcond: trackcond,
WagerTypes: WagerTypes,
render: entry
});
};
render() {
const races = this.state.data.racesTrack.Races;
const racesList = [];
if(races){
races.forEach((race) => {
racesList.push(
<span className="badge" style={{cursor: 'pointer'}} key={race['race-id']} onClick={() =>
this.handleClick(ActionTypes.GET_RACE_ENTRIES,
race['race-id'],
race['race-desc'],
race['post-time'],
race['distance'],
race['purse'],
race['surface'],
race['trackCond'],
race['WagerTypes']
)}>{race['race-number']}
</span>
);
});
}
return (
<div className={styles.container}>
</div>
);
}
}
**Component tracks who calls racesTrack**
class TracksBar extends Component {
static getStores() {
return [ConfigStore];
};
static calculateState() {
const configData = ConfigStore.getState();
return {
configInfo: configData
};
};
handleClick(actionType, id) {
const params = {actionType: actionType, id: id};
ActionCreators.actionTrigger(params);
};
render() {
const showTracks = this.state.configInfo.tracks.TrackList;
const tracklist = [];
const harnessList = [];
const greyList = [];
if(showTracks){
showTracks.forEach((track) => {
if(track['track-type'] === 0) {
tracklist.push(
<tr key={track['track-id']} onClick={() => this.handleClick(ActionTypes.GET_RACE_TRACK,track['track-id'])}>
<td className="col-sm-6"><Link to="/races">{track['track-name']}</Link></td>
</tr>
)
} else if(track['track-type'] === 1) {
harnessList.push(
<tr key={track['track-id']} onClick={() => this.handleClick(ActionTypes.GET_RACE_TRACK,track['track-id'])}>
<td className="col-sm-6"><Link to="/races">{track['track-name']}</Link></td>
</tr>
)
} else if(track['track-type'] === 2) {
greyList.push(
<tr key={track['track-id']} onClick={() => this.handleClick(ActionTypes.GET_RACE_TRACK,track['track-id'])}>
<td className="col-sm-6"><Link to="/races">{track['track-name']}</Link></td>
</tr>
)
}
});
}
else{
console.log('no hay tracks')
}
return (
<div className={styles.main}>
</div>
);
}
}
Есть ли способ поместить этот объект, который возвращает службу, в массив, чтобы при повторном нажатии снова перейти к этому массиву ипроверить, существуют ли эти данные, чтобы они больше не вызывали службу?