首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将效果调节器配置为将错误传递给redux-脱机回滚?

如何将效果调节器配置为将错误传递给redux-脱机回滚?
EN

Stack Overflow用户
提问于 2021-01-03 16:16:22
回答 1查看 353关注 0票数 1

问题

我最近刚刚发现了这个库,并且正在为一个react原生应用程序实现它,但我无法理解效果协调器如何将错误传递回滚。我正在触发下面的操作,无论响应是成功还是失败,效果协调器都会直接将所有内容传递给提交。有人能告诉我我在这里做错了什么吗?

代码语言:javascript
复制
const saveProfileRequest = (query, link): Action => ({
  type: SAVE_PROFILE_PICTURE_REQUEST,
  meta: {
    offline: {
      effect: {
        url: BASE_URL,
        method: 'POST',
        body: JSON.stringify({
          query,
          variables: { url: link }
        })
      },
      commit: { type: SAVE_PROFILE_PICTURE_SUCCESS, meta: { link } },
      rollback: { type: SAVE_PROFILE_PICTURE_FAILURE }
    }
  }
});

期望值

由于我目前正在将离线功能实现到一个现有的应用程序,因此我期望效果协调器能够将成功响应传递给commit,并将错误响应传递给回滚。

存储配置

代码语言:javascript
复制
    // @flow
    import { createStore, applyMiddleware, combineReducers } from 'redux';
    import { composeWithDevTools } from 'redux-devtools-extension';
    import { offline } from '@redux-offline/redux-offline';
    import offlineConfig from '@redux-offline/redux-offline/lib/defaults';
    import { persistStore, persistReducer } from 'redux-persist';
    import autoMergeLevel2 from 'redux-persist/lib/stateReconciler/autoMergeLevel2';
    import thunkMiddleware from 'redux-thunk';
    import AsyncStorage from '@react-native-community/async-storage';
    import type { Store } from '@types/Store';
    import rootReducer from '@reducers/index';
    
    const persistConfig = {
      key: 'root',
      storage: AsyncStorage,
      whitelist: ['reducerOne', 'reducerTwo', 'reducerThree'],
      stateReconciler: autoMergeLevel2
    };
    
    const persistedReducer = persistReducer(
      persistConfig,
      combineReducers(rootReducer)
    );
    
    const store: Store = createStore(
      persistedReducer,
      composeWithDevTools(
        applyMiddleware(thunkMiddleware),
        offline({
          ...offlineConfig,
          retry(_action, retries) {
            return (retries + 1) * 1000;
          },
          returnPromises: true
        })
      )
    );
EN

回答 1

Stack Overflow用户

发布于 2021-06-24 03:50:04

我也有同样的问题,因为我们的GraphQL API总是返回200,但是有一个错误对象,所以我需要定制它。

基本上,您需要自定义丢弃函数,在发生错误时返回false

默认丢弃已在网络问题发生时返回false,但如果响应中有错误,并且返回200,则可以自定义。

丢弃文档:https://github.com/redux-offline/redux-offline/blob/develop/docs/api/config.md#discard

默认实现(您可以使用它作为初稿):https://github.com/redux-offline/redux-offline/blob/develop/src/defaults/discard.js

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65552057

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档