我正在使用 React-Native 开发 iOS 和 Android 应用程序。一切正常,直到我在 Android 上的一个 Axios 响应给了我旧数据而不是最新的服务器数据。在 iOS 上完全没有问题。这是对 HTTPS 端点的简单 GET 请求,由 Nginx 服务器后面的 Java/Spring Boot 后端提供服务。
我使用的是 Expo SDK 31(最新),Axios 0.18 和 Redux 4.0.1。另外,我正在使用这个 repo 中的 redux-axios-middleware:https://github.com/svrcekmichal/redux-axios-middleware .奇怪的是,无论我做什么调试,无论是查看设备上的网络检查器还是通过拦截器记录 Axios 响应,它都确实为我提供了 Android 上的这些旧数据。在物理设备和模拟器中。无处可见错误。真的卡在这上面了!应用程序中的其他响应,在 Android 上,以完全相同的方式使用 Axios、Redux 和这个中间件,工作得很好。
这是 reducer ,放大了给出问题的 Action :
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"
};
...
}
这是 Action 本身:
export function getTaskDetails(task) {
return {
type: TaskActionTypes.GET_TASK_DETAILS,
payload: {
request: {
url: task._links.self.href,
method: "get",
}
}
};
}
预期在所有其他请求中看到和看到:最新数据。已见:旧的,似乎是缓存数据。但这对我来说完全是猜测,因为没有错误信息,而且一切都像 iOS 上的魅力一样。
最佳答案
错误已解决。这是因为缺少使用 Expo MapView 组件的 Google Maps API key 。在 iOS 上,这不是必需的,因为它使用 Apple map 。我在这个项目中完全删除了 Expo,因为它让我在调试时很头疼!
关于react-native - 从 API 获取错误地在 Android 上返回旧的 "cached"数据,在 iOS 上返回最新数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53969305/