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

大卫·列维

每当我尝试分派动作时,都会收到此错误消息:

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

我已经安装了redux-thunk并且没有异步操作,它正在运行。

存储配置:

import { applyMiddleware, createStore } from 'redux';
import thunk from 'redux-thunk';
import { createLogger } from 'redux-logger';
import { composeWithDevTools } from 'redux-devtools-extension';

import reducers from '../reducers/index';

const logger = createLogger();

export default createStore(reducers, composeWithDevTools(applyMiddleware(thunk)));

使用者介面:

...
import { connect } from 'react-redux';
import { getCities } from '../../actions/cities';
...
componentDidMount = async () => {
    try {
      const cities = await this.props.getCities();
      console.log(cities);
    } catch (error) {
      console.log(`errorhome: ${error}`);
    }
    SplashScreen.hide();
  }
...

const mapDispatchToProps = dispatch => ({
  changeNetworkStatus: () => dispatch(changeNetworkStatus),
  getCities: () => dispatch(getCities),
});

export default connect(mapStateToProps, mapDispatchToProps)(Home);

行动:

import database from '../config/utils';

export const GET_CITIES_START = 'GET_CITIES_START';
export const GET_CITIES_FINISHED = 'GET_CITIES_FINISHED';
export const GET_CITIES_ERROR = 'GET_CITIES_ERROR';

const getCititesStart = () => ({ type: GET_CITIES_START });
const getCititesFinished = cities => ({ type: GET_CITIES_FINISHED, cities });
const getCititesError = error => ({ type: GET_CITIES_ERROR, error });

export const getCitites = () => async (dispatch) => {
  dispatch(getCititesStart());
  try {
    const cities = [];
    const snap = await database.ref('cities').once('value');
    console.log('snap: ', snap);
    snap.forEach((element) => {
      const city = {
        city: element.key,
        coordinate: element.val().coordinate,
      };
      cities.push(city);
    });
    dispatch(getCititesFinished(cities));
  } catch (error) {
    dispatch(getCititesError(error));
  }
};

编辑:如果我也添加logger到中间件,错误消息是这样的:

TypeError:无法读取未定义的属性“类型”

谢谢你的帮助!

扬·卡西奥(JanCássio)

动作是返回具有动作数据的对象的函数,该数据是具有type属性的对象

您正在分派这样的操作:

dispatch(getCities)

您应该分派以下操作:

dispatch(getCities())

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

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

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

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

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

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

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

“动作必须是普通对象。对异步动作使用自定义中间件。” 与react / redux

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

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

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

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

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

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

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

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

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

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

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

动作必须是普通对象,对异步动作使用自定义中间件

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

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

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

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

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

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

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

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

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

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