Я разрабатываю приложение для 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.