umiプロジェクトにおけるdva effects異常統一処理
1203 ワード
フロントエンドプロジェクトではAnt Designを使用し,このフレームワークではdva,umi,redux-sagaを使用した.バックグラウンドとのインタラクションではeffectsを使用する必要があります.たとえば、
バックグラウンドサーバが500エラーを返すと、call Effectが例外を放出し、generatorが停止します.解決策はtry catch、例えば
ただし,これでは呼び出しのたびにtry catchが必要となるため,例外処理を統一する必要がある.Ant Designパッケージはumi,umiパッケージはdva,dvaパッケージはredux-sagaである.統合例外処理はumiで行うことができる.公式文書では以下のように説明されています.
srcディレクトリの下にapp.jsを新規作成します.内容は次のとおりです.
*fetchColumns(_, { call, put }) {
const data = yield call(fetchColumns);
yield put({
type: 'saveColumns',
payload: data,
});
},
*fetchSessionColumns(_, { call, put }) {
const data = yield call(fetchSessionColumns);
yield put({
type: 'saveSessionColumns',
payload: data,
});
},
バックグラウンドサーバが500エラーを返すと、call Effectが例外を放出し、generatorが停止します.解決策はtry catch、例えば
*fetchColumns(_, { call, put }) {
try{
const data = yield call(fetchColumns);
yield put({
type: 'saveColumns',
payload: data,
});
}catch (e) {
onError(e)
}
}
ただし,これでは呼び出しのたびにtry catchが必要となるため,例外処理を統一する必要がある.Ant Designパッケージはumi,umiパッケージはdva,dvaパッケージはredux-sagaである.統合例外処理はumiで行うことができる.公式文書では以下のように説明されています.
srcディレクトリの下にapp.jsを新規作成します.内容は次のとおりです.
export const dva = {
config: {
onError(e) {
e.preventDefault();
console.error(e.message);
},
}
};