我正在开发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;
}
我尝试对代码进行一些更改,即删除中间件。
知道为什么会发生吗?我想念什么吗?
答案 0 :(得分:2)
我注意到您的createStore调用为false,因为增强器作为第三个参数传递。更改为:
const store = createStore(persistedReducer, undefined, applyMiddleware(thunk));
另外,减速器的结构是假的。减速器中的第一个参数应为initialState,然后将动作作为第二个参数-这就是为什么未定义对象不是对象!
如Reducers中所述,它必须具有(previousState,action)=> newState的签名,被称为reducer函数,并且必须是纯净且可预测的。