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

纳比尔·阿尤布(Nabeel Ayub)

我是Redux的新手,在执行操作时遇到错误,但我陷入了错误

“动作必须是普通对象。对异步动作使用自定义中间件。”,我检查了流程,但看不到任何问题,以下代码如下:

我的JS容器文件:

import React from 'react'
import {Redirect} from 'react-router-dom'
import * as actions from './../store/actions/index'
import { connect } from 'react-redux'

class home extends React.Component{

constructor(props){
    super(props);
    this.state={
        isClk:false
    }
}


performLogout = (evt)=> {
    evt.preventDefault();
    this.props.onLogout();
    this.setState({isClk: true})
};

render(){

    let redirect=null;

    if (this.state.isClk){
        redirect=<Redirect to="/login"/>
    }
    return(

        <div>
            {redirect}
            <h1>In Home</h1>
            <button onClick={this.performLogout}>Logout</button>
        </div>
    )
}

}

  const mapDispatchToProps = dispatch =>{
     return {
      onLogout: () => dispatch(actions.logout())
    }
  };

 export default connect(null,mapDispatchToProps)(home)

Index.js:

   export {
auth,
logout
} from './auth'

动作(auth.js):

export const logout =()=>{
 return(
    actionTypes.AUTH_LOGOUT
 )
};

减速器:

  const authLogout=(state,action)=>{
     return updateObject(state,{
         token:null,
         loading:false,
         error:null
    })
   };

 const reducer=(state=initialState,action)=>{

 switch(action.type){
    case actionTypes.AUTH_FAIL: return authFail(state,action);
    case actionTypes.AUTH_LOGOUT: return authLogout(state,action);
    default:
        return state
  }

 };

商店:

       import {Provider} from 'react-redux'
       import { createStore, applyMiddleware, compose, combineReducers } from 'redux'
       import {BrowserRouter} from "react-router-dom";
       import authReducer from './Containers/store/reducers/auth'
       import thunk from 'redux-thunk';

       const composeEnhancers = compose;

       const RootReducer=combineReducers({
              auth:authReducer
       });

       const store=createStore(RootReducer,composeEnhancers(applyMiddleware(thunk)));

       const app = (
                      <Provider store={store}>
                     <BrowserRouter>
                       <App />
                     </BrowserRouter>
                      </Provider>
                  );

ReactDOM.render(app,document.getElementById('root'));

我想在用户单击注销按钮时执行注销操作,我可以找到问题所在,我的商店是否已正确初始化或出现问题?或其他任何人在派遣时,请指导?

您的动作创建者应该返回具有类型的对象,当前您仅返回字符串常量。

// Actions(auth.js):

export const logout =()=>{
 return {
    type: actionTypes.AUTH_LOGOUT,
 };
};

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

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

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

redux-observable + socket.io:动作必须是普通对象。使用自定义中间件进行异步操作

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

为什么会出现错误“操作必须是普通对象。对异步操作使用自定义中间件。” 出现,当没有异步操作时?

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

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

React-Redux - 未处理的拒绝(错误):操作必须是普通对象。使用自定义中间件进行异步操作

动作必须是普通对象。即使使用 thunk 作为中间件,也使用自定义中间件进行异步操作错误

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