Je n'ai rien trouvé ici concernant cette erreur:
"Store n'a pas de réducteur valide. Assurez-vous que l'argument passé à combineReducers est un objet dont les valeurs sont des réducteurs."
Mon réducteur
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;
}
Combiner
import { combineReducers } from 'redux';
import { FriendListReducer } from './FriendListReducer';
const rootReducer = combineReducers({
friends: FriendListReducer
});
export default rootReducer;
Ma configuration de magasin
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;
}
Votre instruction import
est incorrecte. Soit vous utilisez import { Foo } from 'bar'
ensemble avec export Foo
, o utilisez import Foo from 'bar'
si vous exportez avec export default Foo
.
En d'autres termes, modifiez export default function FriendListReducer
à export function FriendListReducer
, ou remplacez l'instruction d'importation par import { FriendListReducer }
à import FriendListReducer
.
Si l'objet est vide.
export default combineReducers({
})
Cette erreur apparaîtra.
../reducers/reducers? c'est un nom étrange
Quoi qu'il en soit, il semble que ../reducers/reducers ne retourne pas de réducteur, si reducers est un répertoire, mettez un index.js à l'intérieur, importez chaque réducteur et créez un réducteur racine
import FriendListReducer from "./FriendListReducer"
const rootReducer = combineReducers({
friendList : FriendListReducer
})
export default rootReducer
vous aurez state.friendList dans votre état.
J'espère que cela aidera
Il semble que votre fonction de réduction de niveau supérieur utilise un tableau comme valeur par défaut. Redux s'attend à ce que le sommet de votre état soit un objet, pas un tableau. Essayez de placer le tableau sur une clé particulière de cet objet, comme { friendList : [] }
.