В магазине нет допустимого редуктора. Убедитесь, что аргумент, переданный в combReducers, является объектом, значения которого являются редюсерами.

это был мой редуктор, который отлично работал:

    const rootReducer   =   createStoreWithMiddleware(combineReducers({
        companies: companies,
        brands: brands,
        login: login,
        chat: chat,
        banners: banners,
        sessions: sessions,
        settings: settings,
        statistics: statistics
}));

я хочу, чтобы моя система была модульной, поэтому я попытался изменить ее на:

    const rootReducer   =   createStoreWithMiddleware(combineReducers({
    chatModule: {
        companies: companies,
        brands: brands,
        login: login,
        chat: chat,
        banners: banners,
        sessions: sessions,
        settings: settings,
        statistics: statistics
    }
}));

то я получаю эту ошибку в браузере:

Store does not have a valid reducer. Make sure the argument passed to combineReducers is an object whose values are reducers.

это весь код файла:

    import {combineReducers, createStore, applyMiddleware} from 'redux';
import ReduxPromise from 'redux-promise';
import {login, chat, chatClick, banners, sessions, companies, settings, statistics, brands} from '../actions/actions'

const createStoreWithMiddleware =   applyMiddleware(ReduxPromise)(createStore);

const rootReducer   =   createStoreWithMiddleware(combineReducers({
    chatModule: {
        companies: companies,
        brands: brands,
        login: login,
        chat: chat,
        banners: banners,
        sessions: sessions,
        settings: settings,
        statistics: statistics
    }
}));

export default rootReducer;

компании, бренды, логин и т. д... экспортируются функции...


person Paz Lazar    schedule 05.05.2016    source источник


Ответы (1)


Как сказано в сообщении об ошибке, вы должны перейти к объекту combineReducers, значения которого являются reducers. Вы передали объект, значение которого является object ({companies: companies,brands: brands, ...})

combineReducers возвращает сам редуктор, поэтому вы можете сделать:

const rootReducer = createStoreWithMiddleware(combineReducers({
  chatModule: combineReducers({
    companies: companies,
    brands: brands,
    login: login,
    chat: chat,
    banners: banners,
    sessions: sessions,
    settings: settings,
    statistics: statistics
  })
})
person trashgenerator    schedule 05.05.2016