从API提取错误地返回Android上的旧“缓存”数据,iOS上的最新数据

时间:2018-12-29 11:59:00

标签: react-native redux axios expo

我正在React-Native中开发一个iOS和Android应用程序。一切正常,直到我在Android上的Axios响应之一为我提供了旧数据,而不是最新的服务器数据。在iOS上完全没有问题。这是对HTTPS端点的简单GET请求,该请求由nginx服务器后面的Java / Spring Boot后端提供服务。

我正在使用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 :(得分:0)

错误已解决。这是因为缺少使用Expo MapView组件的Google Maps API密钥。在iOS上,这不是必需的,因为它使用Apple Maps。我完全删除了这个项目中的Expo,因为它在调试时让我头疼!