Извлечение из API ошибочно возвращает старые «кэшированные» данные на Android, последние данные на iOS - PullRequest
0 голосов
/ 29 декабря 2018

Я разрабатываю приложение для iOS и Android в React-Native.Все работало нормально, пока один из моих ответов Axios на Android не дал мне старые данные вместо самых последних данных сервера.На iOS проблем нет вообще.Это простой запрос GET к конечной точке HTTPS, обслуживаемый бэкэндом Java / Spring Boot, за сервером nginx.

Я использую Expo SDK 31 (последний), с Axios 0.18 и Redux 4.0.1.Кроме того, я использую промежуточное программное обеспечение redux-axios-middleware из этого репозитория: https://github.com/svrcekmichal/redux-axios-middleware. Странно то, что независимо от того, что я делаю отладку, будь то проверка сетевого инспектора на устройстве или регистрация ответа Axios через перехватчик, онвсе дает мне действительно эти старые данные на Android.Как на физическом устройстве, так и в эмуляторе.Нигде ошибки не видно.Действительно застрял на этом!Другие ответы в приложении на Android, использующие Axios, Redux и это промежуточное ПО точно таким же образом, работают отлично.

Вот редуктор, увеличенный для действия, вызывающего проблемы:

import { TaskActionTypes } from '../actions/ActionTypes';

export default function taskReducer(state = {}, action) {
  switch (action.type) {
     ...
     case TaskActionTypes.GET_TASK_DETAILS:
       return { ...state, loading: true };
     case TaskActionTypes.GET_TASK_DETAILS_SUCCESS:
       return { ...state, loading: false, task: action.payload.data };
     case TaskActionTypes.GET_TASK_DETAILS_FAIL:
       return {
         ...state,
         loading: false,
         error: "Error while fetching task details"
       };
     ...
}

Вот само действие:

export function getTaskDetails(task) {
  return {
    type: TaskActionTypes.GET_TASK_DETAILS,
    payload: {
      request: {
        url: task._links.self.href,
        method: "get",
      }
    }
  };
}

Ожидается увидеть и увидеть во всех других запросах: самые последние данные.Видно: старые, похоже, кешированные данные.Но это полное предположение, где это происходит для меня, потому что нет информации об ошибках, и все работает как шарм на iOS.

1 Ответ

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

Ошибка устранена.Это произошло из-за отсутствия ключа API Карт Google для использования компонента Expo MapView.На iOS это не требуется, потому что он использует Apple Maps.Я полностью удалил Экспо в этом проекте, потому что он доставлял мне головную боль при отладке!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...