【发布时间】:2019-08-09 06:25:51
【问题描述】:
我是 react 新手,所以我尝试使用 axios 发出获取请求,以响应服务以获取赛道和相应的比赛,但我得到的赛道就像一个空对象。我需要知道如何有效地发出 get 请求。
trackUtils.js
import AppDispatcher from '../dispatcher/AppDispatcher';
import ActionTypes from '../constants/AppConstants';
import config from '../../config';
import axios from 'axios';
class trackUtil {
constructor() {
this.serverConfig = config.ServiceConfig;
this.baseURL = this.serverConfig.url + ':' + this.serverConfig.port + '/';
this.appConfig = config.AppConfig;
}
trackRequest(data) {
const url = this.baseURL + 'BusRace/GetRacesTrack';
axios.get(url)
.then((response ) => {
AppDispatcher.dispatch({
type: ActionTypes.GET_TRACK,
data: { ...response.data.tracks }
});
console.log(data);
})
.catch((error) => {
console.log(error);
});
};
}
export default new trackUtil();
ConfigStore.js
import { ReduceStore } from 'flux/utils';
import ActionTypes from '../constants/AppConstants';
import AppDispatcher from '../dispatcher/AppDispatcher';
import config from '../../config';
class ConfigStore extends ReduceStore {
getInitialState() {
return {
language: config.SiteConfig.defaultLanguage,
languageLabels: {},
tracks : {}
};
}
reduce(state, action) {
switch (action.type) {
case ActionTypes.GET_TRACK:
var newState = Object.assign({}, state);
newState.tracks = action.data;
return newState;
default:
return state;
}
}
}
export default new ConfigStore(AppDispatcher);
编辑 从我的组件 Body.js 添加
static getStores() {
return [ConfigStore];
};
static calculateState() {
let configData = ConfigStore.getState();
return {
configInfo: configData,
local: {"lineTypesDropTitle": ""}
};
};
componentDidMount() {
const params = {...this.state, ...{actionType: ActionTypes.GET_TRACK}};
ActionCreators.actionTrigger(params);
}
希望有人可以帮助我。
【问题讨论】:
-
你应该控制台
response.data.tracks而不是data来检查来自服务器的数据响应。而{...response.data.tracks}等于response.data.tracks -
谢谢,但现在我得到了未定义的曲目
-
那么服务器给你的数据没有
tracks属性?您应该在发送它之前检查数据响应结构。喜欢console.log(response)
标签: reactjs axios fetch get-request