使用 redux-observable 处理 Apollo-client 时出错
Error handling Apollo-client with redux-observable
我正在使用 Apollo-client 和 redux-observable 进行突变,到目前为止这是我的代码:
export const languageTimeZoneEpic = (action$) => {
return action$.ofType('PING')
.flatMap(action => client.mutate({
mutation: languageTimeZoneIdMutation,
variables: { id: action.id, defaultLanguage: action.selected_language, defaultTimeZoneId: action.selected_timeZone }
})
.then(store.dispatch(setLocale(action.selected_language)))
)
.map(result => ({
type: 'PONG',
payload: result
}))
.catch(error => ({
type: 'PONG_ERROR'
}));
};
我的突变工作正常,但我似乎无法让我的 catch(error)
工作。在我找到的关于此的少量文档中,它建议我在 error => 之后放置 Observable of
但随后它给了我一个错误 Observable 是 未定义。
谢谢
更新:
如果应用程序和服务器之间的连接不起作用,它只会等待连接恢复,然后完成史诗。我希望它能够捕获并出错并停止史诗。
发现上面代码中的catch(error)
没有问题。事实证明,当我尝试建立连接时,暂停服务器并没有抛出 error。必须关闭它才能引发错误。
对于那些正在寻找使用 Apollo-client 和 redux-observable 实现突变的好方法的人(因为有几乎没有文档),这是我用于突变的代码:
import { languageMutation } from '../mutation/languageMutation';
import { changeLanguageFulfilled, changeLanguageError } from '../actions/actions';
export const languageEpic = (action$) => {
return action$.ofType('CHANGE_LANGUAGE')
.mergeMap(action => client.mutate({
mutation: languageMutation,
variables: { id: action.id, defaultLanguage: action.selected_language, defaultTimeZoneId: action.selected_timeZone }
}).then(result => changeLanguageFulfilled(result))
.catch(error => changeLanguageError(error))
);
};
changeLanguageFulfilled 和 changeLanguageError 都是触发它们自己的 reducer 的动作。
希望这对某人有所帮助。
我正在使用 Apollo-client 和 redux-observable 进行突变,到目前为止这是我的代码:
export const languageTimeZoneEpic = (action$) => {
return action$.ofType('PING')
.flatMap(action => client.mutate({
mutation: languageTimeZoneIdMutation,
variables: { id: action.id, defaultLanguage: action.selected_language, defaultTimeZoneId: action.selected_timeZone }
})
.then(store.dispatch(setLocale(action.selected_language)))
)
.map(result => ({
type: 'PONG',
payload: result
}))
.catch(error => ({
type: 'PONG_ERROR'
}));
};
我的突变工作正常,但我似乎无法让我的 catch(error)
工作。在我找到的关于此的少量文档中,它建议我在 error => 之后放置 Observable of
但随后它给了我一个错误 Observable 是 未定义。
谢谢
更新:
如果应用程序和服务器之间的连接不起作用,它只会等待连接恢复,然后完成史诗。我希望它能够捕获并出错并停止史诗。
发现上面代码中的catch(error)
没有问题。事实证明,当我尝试建立连接时,暂停服务器并没有抛出 error。必须关闭它才能引发错误。
对于那些正在寻找使用 Apollo-client 和 redux-observable 实现突变的好方法的人(因为有几乎没有文档),这是我用于突变的代码:
import { languageMutation } from '../mutation/languageMutation';
import { changeLanguageFulfilled, changeLanguageError } from '../actions/actions';
export const languageEpic = (action$) => {
return action$.ofType('CHANGE_LANGUAGE')
.mergeMap(action => client.mutate({
mutation: languageMutation,
variables: { id: action.id, defaultLanguage: action.selected_language, defaultTimeZoneId: action.selected_timeZone }
}).then(result => changeLanguageFulfilled(result))
.catch(error => changeLanguageError(error))
);
};
changeLanguageFulfilled 和 changeLanguageError 都是触发它们自己的 reducer 的动作。
希望这对某人有所帮助。