reactjs - MirageJs:如果我通过直通调用 api,则无法使用 axios
问题描述
我有一个应用程序与切片和重击作出反应。我使用@reduxjs/toolkit,并使用“createSlice”api 创建了切片,并使用“createAsyncThunk”创建了 thunk。
我的想法:
export const loginThunk = createAsyncThunk('login/local', async (loginData: LoginData) => {
const {username, password} = loginData;
const l = await axios.post(`${BASE_URL}_login/local`, {username, password}, {
headers: {'Content-Type': 'application/json'}
})
return l.data;
})
在我的应用程序中,在我的真实服务器上运行带有模拟 api 和“直通”的 mirage 服务器。
当我发送“loginThunk”thunk 时,它会在我的减速器中运行“loginThunk.pending”案例并停止。
永远不会实现或拒绝。
如果我在没有运行 mirage 服务器的情况下发送“loginThunk”thunk,它就可以工作。
如果我在没有运行 mirage 服务器的情况下发送“loginThunk”thunk,但我使用“fetch”而不是 axios,它就可以工作。
似乎是 axios 和 mirageJs passthrough 之间的问题。
有任何想法吗??
太感谢了
解决方案
原来问题源于在 axios 0.21.2 中更改的xhr适配器。处理程序request.onreadystatechange
不再添加到请求中(XMLHttpRequest
似乎在您启动 mirageJS 服务器时重新定义)。
解决方案是创建您自己的适配器 - 基本上复制 lib/adapters/xhr.js 并确保语句的else
分支if
通过 - 并在您的 axios 配置中使用它。
推荐阅读
- excel - 我得到一个#Name?运行宏时出错
- html - 部分出现在 html 中的正常流程之外
- mercurial - 分支上的新远程头?水银推送错误
- c# - Csv 文件被读入我的 ReadCsvFile 方法,但没有被传递到我解析它的位置(TinyCsvParser)
- java - 在 java 中使用元数据转换 JPEG 文件名
- php - 如何修复 Laravel/Lumen 应用程序中的“cURL 错误 6:无法解析主机”
- reactjs - Google API 与来自 `react-router` v3 的 `Link` 一起使用时似乎会导致某种错误
- unity3d - 漂浮在 RWTexture
根据 if 语句的哪一侧输出不一致的值 - redis - Redis Streams 如何处理耗尽所有可用内存的问题?
- mysql - 请求 SQL:加入表并且不想要多个值