Redux 商店没有有效的减速器

人气:637 发布:2022-10-16 标签: reactjs redux reducers

问题描述

在这里找不到关于此错误的任何信息:

Haven't been able to find anything around here regarding this error:

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

"Store does not have a valid reducer. Make sure the argument passed to combineReducers is an object whose values are 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;
}

合路器

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

const rootReducer = combineReducers({
  friends: FriendListReducer
});
export default rootReducer;

我的商店配置

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;
}

推荐答案

您的 import 语句不正确.要么将 import { Foo } from 'bar'export Foo 一起使用,或 使用 import Foo from 'bar' 如果您使用 export default Foo 导出.

Your import statement is incorrect. Either you use import { Foo } from 'bar' together with export Foo, or use import Foo from 'bar' if you export with export default Foo.

换句话说,将export default function FriendListReducer改为export function FriendListReducer,或者将import语句从import { FriendListReducer }改为导入FriendListReducer.

In other words, change either export default function FriendListReducer to export function FriendListReducer, or change the import statement from import { FriendListReducer } to import FriendListReducer.

920