Redux-offline: действие коммита никогда не вызывалось - PullRequest
0 голосов
/ 31 января 2019

Я пытаюсь реализовать Redux-offline в моем приложении-реактиве для этого. Я установил модуль и добавил в автономный режим мой createStore метод:

 const store = createStore(
  myReducer,
  compose(
    offline(offlineConfig),
    applyMiddleware(thunk, promiseMiddleware())
  )
);

это действиекоторый использует redux-offline:

export const addResources = resource => ({
  type: "ADD_RESOURCES",
  payload: resource,
  meta: {
    offline: {
      // the network action to execute:
      effect: {
        url: "https://reqres.in/api/users",
        method: "POST",
        json: {
          body: { name: "paul rudd", movies: ["Fake data", "Fake text"] }
        }
      },
      // action to dispatch when effect succeeds:
      commit: { type: "FOLLOW_ADD_RESOURCE", meta: { resource } },
      // action to dispatch if network action fails permanently:
      rollback: { type: "ADD_RESOURCE_ROLLBACK", meta: { resource } }
    }
  }
});

для объяснения. Я использую пример фиктивного API, который принимает создание новых пользователей и возвращает идентификатор в качестве ответа.Моя проблема в том, что действие commit никогда не вызывается после отправки моего действия ADD_RESOURCES, с другой стороны, rollback вызывается, если я отправляю неверный запрос.

Это мой редуктор:

let tempList = state.list.concat();
  switch (action.type) {
    case ADD_RESOURCES:
      console.log("add resources action");
      return Object.assign({}, state, {
        list: tempList
      });
    case FOLLOW_ADD_RESOURCE:
      console.log("  *** FOLLOW_ADD_RESOURCE **", res);
      return Object.assign({}, state, {
        list: tempList
      });
    case ADD_RESOURCE_ROLLBACK:
      console.log("ADD_RESOURCE_ROLLBACK");
      return Object.assign({}, state, {
        list: tempList
      });
    default:
      return state;
  }

PS: я тестирую это на эмуляторе Pixel 2 xl API 27, с Wi-Fi и без подключения к Интернету и без него.

Как я уже сказал, действие фиксации никогда не отправляется,Кто-нибудь знает, что я ошибся?

1 Ответ

0 голосов
/ 22 февраля 2019

Я думаю, вам нужны некоторые изменения в файле действий

export const addResources = (name,movies) => ({
  type: "ADD_RESOURCES",
  payload: name,movies
  meta: {
    offline: {
      // the network action to execute:
      effect: {
        url: "https://reqres.in/api/users/",
        method: "POST",
        body : {name: "paul rudd", movies: ["Fake data", "Fake text"]},
        headers: { 'content-type': 'application/x-www-form-urlencoded' }

      },
      // action to dispatch when effect succeeds:
      commit: { type: "FOLLOW_ADD_RESOURCE", meta: { name,movies} },
      // action to dispatch if network action fails permanently:
      rollback: { type: "ADD_RESOURCE_ROLLBACK", meta: { name,movies} }
    }
  }
});
...