我正在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上都像魅惑一样。
答案 0 :(得分:0)
错误已解决。这是因为缺少使用Expo MapView组件的Google Maps API密钥。在iOS上,这不是必需的,因为它使用Apple Maps。我完全删除了这个项目中的Expo,因为它在调试时让我头疼!