내 앱의 데이터 소스는 XML 형식의 데이터 만 제공합니다.XML을 XML 형식으로 분석합니다.
XML 데이터를 가져 오기 위해 axios를 사용합니다. 결과의 데이터 섹션에 문자열로 끝납니다.
xml2js를 사용하여 변환하려고 시도했지만 비동기 작업을 반환하고 반환하므로 redux-promise middelware가 작동하지 않습니다. 감속기가 데이터를 렌더링해야하는 구성 요소로 보낼 때 페이로드는 아무 것도 아닙니다.
이것이 합당한 지 확실하지 않지만 구성 요소에서 데이터를 보내기 전에 감속기가 새 함수 호출을 기다릴 때까지 기다릴 수 있습니까?
행동하는 index.js
export function fetchData(jobid, dest) {
const url = `${DATA_URL}jobid=${jobid}&refdist=${dest}`;
const request = axios.get(url);
console.log(request);
return {
type: FETCH_DATA,
payload: request
}
}
내 감속기
export default function (state = [], action) {
console.log(action);
switch (action.type) {
case FETCH_DATA:
console.log("pre");
parseString(action.payload.data, function (err, result) {
// Do I need some magic here??? or somewhere else?
console.dir(result);
});
return [action.payload.data, ...state];
}
return state;
}
나는 감속기 코드를 알고 비동기 작업에 대한 당신은 당신이 가져 오는 과정에 대해 알 필요가 있습니다 또한 redux-thunk
사용할 수 있습니다 변환되지 않은 XML 문자열을 반환하므로 정확하지 않지만 반환해야하는 항목은 무엇입니까? 또는 parseString 함수가 반환 될 때까지 감속기가 반환되지 않도록 할 수 있습니까? – Endre
감속기는 해석해서는 안됩니다. 감속기는 조치를 취하고 이전 상태는 새 상태를 만듭니다. 그 일은 아무것도 가져 오거나 변환하지 않는 것입니다. 감속기를 일시 중지 할 수 있다면 완료 될 때까지 전체 브라우저 페이지를 잠그고 싶습니까? 모든 데이터가 준비 될 때까지 기다렸다가 실행 한 다음에 만 앱 상태에 넣으십시오. 여기에는 데이터의 비동기 파싱이 포함됩니다. – DDS
비동기 작업에는 Redux-Thunk를 사용하십시오. 또는 Redux-Saga를 사용하십시오 (학습 곡선을 준비하십시오). – DDS