Redux商店没有有效的减速器

chr*_*llo 27 reducers reactjs redux

关于此错误,无法在此处找到任何内容:

"Store没有有效的reducer.确保传递给combineReducers的参数是一个值为reducers的对象."

我的减速机

export default function FriendListReducer(state = {friends : []}, action) {
  switch (action.type) {
    case 'ADD_FRIEND':
      return [
        { friends : action.payload.friend }, ...state.friends
      ]     
    default:
      return state;
  }
  return state;
}
Run Code Online (Sandbox Code Playgroud)

import { combineReducers } from 'redux';
import { FriendListReducer } from './FriendListReducer';

const rootReducer = combineReducers({
  friends: FriendListReducer
});
export default rootReducer;
Run Code Online (Sandbox Code Playgroud)

我的商店配置

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

export default function configureStore(initialState = { friends: [] }) {
  const logger = createLogger({
    collapsed: true,
    predicate: () =>
    process.env.NODE_ENV === `development`, // eslint-disable-line no-unused-vars
  });

  const middleware = applyMiddleware(thunkMiddleware, logger);

  const store = middleware(createStore)(rootReducer, initialState);

  if (module.hot) {
    // Enable Webpack hot module replacement for reducers
    module.hot.accept('../reducers/reducers', () => {
      const nextRootReducer = require('../reducers/reducers').default;
      store.replaceReducer(nextRootReducer);
    });
  }

  return store;
}
Run Code Online (Sandbox Code Playgroud)

dan*_*lie 30

你的import陈述不正确.您可以import { Foo } from 'bar'与之一起使用export Foo,可以import Foo from 'bar'在导出时使用export default Foo.

换句话说,要么改变export default function FriendListReducerexport function FriendListReducer,或者从改变import语句import { FriendListReducer }import FriendListReducer.


jie*_*ede 19

如果对象为空.

 export  default  combineReducers({

 })
Run Code Online (Sandbox Code Playgroud)

此错误将显示.


Exa*_*ayy 8

../减速机/减速机?这是一个奇怪的命名

无论如何,似乎../reducers/reducers 不返回reducer,如果reducers 是一个目录,在里面放一个index.js,导入每个reducer 并创建一个root reducer

import FriendListReducer from "./FriendListReducer"

const rootReducer = combineReducers({
   friendList : FriendListReducer
})

export default rootReducer
Run Code Online (Sandbox Code Playgroud)

重要的!! 您将在您的州拥有 state.friendList。

我希望它会有所帮助