为什么我的应用程序返回“操作必须是普通对象,请使用自定义中间件进行异步操作”

约翰·西皮翁

我正在尝试使用redux将用户的当前位置设置为状态,但是每次尝试时,我都会不断收到错误消息Actions must be plain objects. Use custom middleware for async actions我到处看都说这是没有节制的错误,但是正如您从下面我的store.js中可以看到的那样applyMiddleware(thunk)这是我与此操作相关的所有文件:

store.js

import { createStore, applyMiddleware, compose } from 'redux';
import thunk from 'redux-thunk';
import rootReducer from './reducers';

const initialState = {};

const composeEnhancers = window._REDUX_DEVTOOLS_EXTENSION_COMPOSE_ || compose;

const store = createStore(
    rootReducer, 
    initialState,
    composeEnhancers(
        applyMiddleware(thunk),
        window.__REDUX_DEVTOOLS_EXTENSION__ ? window.__REDUX_DEVTOOLS_EXTENSION__() : f => f
      )
);

export default store;

locationAction.js

export const setLocationState = () => {
    dispatch => {
        navigator.geolocation.getCurrentPosition((position) => {
            dispatch({
                type: SET_LOCATION,
                payload: position
            });
        });
    }
}

注意:即使我摆脱了派遣而只拥有该setLocationState()功能,return type: SET_LOCATION我也会遇到相同的错误,因此使我相信我可能在某处配置不正确。

locationReducer.js

const initialState = {
    latitude: 0,
    longitude: 0
}

export default (state = initialState, action) => {
    switch(action.type) {
        case SET_LOCATION:
            return {
                ...state,
                position: action.payload
            }

        default: 
            return state
    }
}

index.jsx

import { setLocationState } from '../../../actions/locationActions'

const locationState = useSelector(state => state.location);
const dispatch = useDispatch();
dispatch(setLocationState()) // <- Here is where error occurs
标记物

setLocationState 看起来越野车:

export const setLocationState = () => {
    dispatch => {
        navigator.geolocation.getCurrentPosition((position) => {
            dispatch({
                type: SET_LOCATION,
                payload: position
            });
        });
    }
}

在这里,dispatch => {}正在创建一个新的箭头函数,但不返回该箭头函数。因此,setLocationState实际上将最终返回undefined,这不是有效的操作对象。

简单的解决方法是return在前面添加一个return dispatch => {

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么我收到“错误:操作必须是普通对象。对异步操作使用自定义中间件。” 错误?

来自分类Dev

Redux错误:动作必须是普通对象。使用自定义中间件进行异步操作

来自分类Dev

React Native :动作必须是普通对象。使用自定义中间件进行异步操作

来自分类Dev

动作必须是普通对象。使用自定义中间件进行异步操作,但我使用的是redux-thunk

来自分类Dev

错误:操作必须是普通对象。使用自定义中间件进行异步操作。 - 即使操作包含方法

来自分类Dev

react-redux错误:操作必须是普通对象。使用自定义中间件进行异步操作

来自分类Dev

RXJS 订阅主题 - 操作必须是普通对象。使用自定义中间件进行异步操作

来自分类Dev

错误:操作必须是普通对象。使用自定义中间件进行异步操作。React-redux 错误

来自分类Dev

React/Redux:错误:操作必须是普通对象。使用自定义中间件进行异步操作

来自分类常见问题

React-Redux:动作必须是普通对象。使用自定义中间件进行异步操作

来自分类Dev

redux devtools未捕获的错误:动作必须是普通对象。使用自定义中间件进行异步操作

来自分类Dev

如何解决:错误:动作必须是普通对象。使用自定义中间件进行异步操作。

来自分类Dev

React Redux Saga:动作必须是普通对象。使用自定义中间件进行异步操作

来自分类Dev

Redux中间件问题-错误:操作必须是纯对象。使用自定义中间件进行异步操作

来自分类Dev

如何解决 react-redux 中的此错误“错误:操作必须是普通对象。使用自定义中间件进行异步操作。”

来自分类Dev

可能未处理的承诺拒绝(ID:0):错误:操作必须是普通对象。使用自定义中间件进行异步操作

来自分类Dev

redux-promise错误:操作必须是普通对象。使用自定义中间件

来自分类Dev

收到错误“操作必须是普通对象。对异步操作使用自定义中间件。” 使用 AXIOS 时在 React Native 中

来自分类Dev

无法击败“操作必须是普通对象。对异步操作使用自定义中间件。” 尝试遵循 redux.js.org 教程时出错

来自分类Dev

反应 - 本地“终极版未捕获的错误:操作必须是纯对象。对于按下按钮异步操作使用自定义中间件

来自分类Dev

使用自定义异步中间件进行分派 - Redux Thunk - react Router

来自分类Dev

在使用带oidc和中间件的Azure AD身份验证的Web应用程序中指定自定义redirect_uri

来自分类Dev

使用分派返回操作必须是普通对象

来自分类Dev

中间件如何执行异步操作?

来自分类Dev

尝试登录时,我的后卫总是在自定义中间件中返回null

来自分类Dev

为什么我的错误处理程序不能处理异步中间件引发的异常?

来自分类Dev

为什么自定义中间件仍在运行?

来自分类Dev

使用中间件进行表操作laravel 5.1

来自分类Dev

WIX自定义操作以启动高架应用程序

Related 相关文章

  1. 1

    为什么我收到“错误:操作必须是普通对象。对异步操作使用自定义中间件。” 错误?

  2. 2

    Redux错误:动作必须是普通对象。使用自定义中间件进行异步操作

  3. 3

    React Native :动作必须是普通对象。使用自定义中间件进行异步操作

  4. 4

    动作必须是普通对象。使用自定义中间件进行异步操作,但我使用的是redux-thunk

  5. 5

    错误:操作必须是普通对象。使用自定义中间件进行异步操作。 - 即使操作包含方法

  6. 6

    react-redux错误:操作必须是普通对象。使用自定义中间件进行异步操作

  7. 7

    RXJS 订阅主题 - 操作必须是普通对象。使用自定义中间件进行异步操作

  8. 8

    错误:操作必须是普通对象。使用自定义中间件进行异步操作。React-redux 错误

  9. 9

    React/Redux:错误:操作必须是普通对象。使用自定义中间件进行异步操作

  10. 10

    React-Redux:动作必须是普通对象。使用自定义中间件进行异步操作

  11. 11

    redux devtools未捕获的错误:动作必须是普通对象。使用自定义中间件进行异步操作

  12. 12

    如何解决:错误:动作必须是普通对象。使用自定义中间件进行异步操作。

  13. 13

    React Redux Saga:动作必须是普通对象。使用自定义中间件进行异步操作

  14. 14

    Redux中间件问题-错误:操作必须是纯对象。使用自定义中间件进行异步操作

  15. 15

    如何解决 react-redux 中的此错误“错误:操作必须是普通对象。使用自定义中间件进行异步操作。”

  16. 16

    可能未处理的承诺拒绝(ID:0):错误:操作必须是普通对象。使用自定义中间件进行异步操作

  17. 17

    redux-promise错误:操作必须是普通对象。使用自定义中间件

  18. 18

    收到错误“操作必须是普通对象。对异步操作使用自定义中间件。” 使用 AXIOS 时在 React Native 中

  19. 19

    无法击败“操作必须是普通对象。对异步操作使用自定义中间件。” 尝试遵循 redux.js.org 教程时出错

  20. 20

    反应 - 本地“终极版未捕获的错误:操作必须是纯对象。对于按下按钮异步操作使用自定义中间件

  21. 21

    使用自定义异步中间件进行分派 - Redux Thunk - react Router

  22. 22

    在使用带oidc和中间件的Azure AD身份验证的Web应用程序中指定自定义redirect_uri

  23. 23

    使用分派返回操作必须是普通对象

  24. 24

    中间件如何执行异步操作?

  25. 25

    尝试登录时,我的后卫总是在自定义中间件中返回null

  26. 26

    为什么我的错误处理程序不能处理异步中间件引发的异常?

  27. 27

    为什么自定义中间件仍在运行?

  28. 28

    使用中间件进行表操作laravel 5.1

  29. 29

    WIX自定义操作以启动高架应用程序

热门标签

归档