React Native:另一个“未定义不是对象(评估action.type)

时间:2018-08-06 21:49:10

标签: ios react-native react-redux create-react-native-app

我正在开发CRNA应用程序,但是商店连接无法正常工作,并且在创建商店时收到上述错误。

“未定义不是对象(正在评估action.type)

寻找类似的问题,我到达了this question,这是在传递给createStore函数时调用的一个reducer,这不是我的情况。

this one有关,这与在异步调度程序之前调用的AnalyticsTracker有关,也与我的情况无关。

这是要复制的最少代码。

App.js

import React from 'react';
import {
  View,
  Text
} from 'react-native'; 
import { Provider } from 'react-redux';
import store from './store';

class App extends React.Component {

  render() {
    return (
      <Provider store={store}>
         <View>
            <Text>Hello</Text>
         </View>
      </Provider>
    );
  }
}

store.js

import { createStore, applyMiddleware } from 'redux';
import thunk from 'redux-thunk';

import reducer from './reducer';
// Here the error happens
export default createStore(reducer, applyMiddleware(thunk));

reducer.js

import actionTypes from './action_types';
const initialState = {
}

export default (action, state=initialState) => {
    // This is the top line on stacktrace
    switch (action.type) {
        case actionTypes.MY_ACTION:
            return state;
    }
    return state;
}

我尝试对代码进行一些更改,即删除中间件。

知道为什么会发生吗?我想念什么吗?

1 个答案:

答案 0 :(得分:2)

我注意到您的createStore调用为false,因为增强器作为第三个参数传递。更改为:

const store = createStore(persistedReducer, undefined, applyMiddleware(thunk));

另外,减速器的结构是假的。减速器中的第一个参数应为initialState,然后将动作作为第二个参数-这就是为什么未定义对象不是对象!

  

如Reducers中所述,它必须具有(previousState,action)=> newState的签名,被称为reducer函数,并且必须是纯净且可预测的。

发件人:https://redux.js.org/recipes/structuringreducers