reactjs - React Redux 错误:操作必须是普通对象。使用自定义中间件进行异步操作
问题描述
以前,我使用相同的方式在后端(springboot)中成功调用了另一个 API,但是创建一个新调用时我收到错误:“操作必须是普通对象。使用自定义中间件进行异步操作”。我尝试了很多其他人的答案,但没有运气。有谁知道发生了什么?提前非常感谢。
行动:
export function getAllValuesAction(listId, player) {
return async (dispatch) => {
dispatch( getAllValues() );
try {
const token = localStorage.getItem('token');
if(token) {
tokenAuth(token);
}
const answer = await clientAxios.post(`/pays/sum/player/${listId}`, player);
dispatch( obtenerSumaPagosJugListaExito(answer.data) );
} catch (error) {
dispatch( getAllValuesError() );
}
}
}
const getAllValues = () => ({
type: START_GETTING_VALUES,
payload: true
});
const getAllValuesSuccess = sumaPago => ({
type: GETTING_VALUES_SUCCESS,
payload: answer
});
const getAllValuesError = sumaPago => ({
type: GETTING_VALUES_ERROR
});
店铺:
import { createStore, applyMiddleware, compose } from 'redux';
import thunk from 'redux-thunk';
import reducer from './reducers';
const store = createStore(
reducer,
compose( applyMiddleware(thunk),
typeof window === 'object' &&
typeof window.__REDUX_DEVTOOLS_EXTENSION__ !== 'undefined' ?
window.__REDUX_DEVTOOLS_EXTENSION__() : f => f
)
);
export default store;
令牌认证:
import clientAxios from './axios';
const tokenAuth = token => {
if(token) {
clienteAxios.defaults.headers.common['Authorization'] = `Bearer ${token}`;
} else {
delete clienteAxios.defaults.headers.common['Authorization'];
}
}
export default tokenAuth;
const clientAxios = axios.create({
baseURL: process.env.REACT_APP_BACKEND_URL
});
export default clientAxios;
加:
如果有人也知道(但至少我只需要知道第一个“react redux 错误”问题):当我在调用中使用 GET 时,我会收到错误消息而没有响应。当我使用 POST(如下面“控制器”中的示例)时,我首先收到响应,然后收到错误消息。
接收请求的springboot控制器:
@PostMapping("/pays/sum/player/{listId}")
public Double getSumPayPlayerList(@RequestHeader (name="Authorization") String token, @PathVariable long listId, @RequestBody Player player ) {...}
Pay 存储库对数据库进行查询:
@Query("select SUM(g.import) from Pay g where g.listId=?1 and g.player=?2")
public Double sumPaysByPlayerList(Long listId, Player player);
谢谢 !
解决方案
我发现问题是因为我试图在模态中显示该信息。由于某种原因,这种情况会产生一些延迟或不同步,因此必须删除模态并找到另一种显示信息的方式。谢谢大家的帮助。
推荐阅读
- amazon-web-services - 是否可以删除传输到队列始终播放的音频提示?- 联系流程 - 亚马逊连接
- amazon-web-services - aws 服务设计和微服务
- python - 基于文本匹配在 Pandas DataFrame 上加入并运行计算
- jquery - Jquery SetInterval 循环结束再次循环重启
- vb.net - 检索数据库中的数据并显示在日历控件VB.Net-2010 windows窗体应用程序中
- node.js - MongoDB如何访问关系模型和更新
- c - 使用 for 循环向数组输入值
- vim - vim - 在插入/正常时更改行号突出显示
- javascript - 生成“Firebase ID 令牌”(访问令牌)的最简单方法是什么?
- python - 在 Python 的 FoxDot 实时编码环境中使用不同的键