私のアプリのデータソースは、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