reactjs - helmet - La tienda de Redux no tiene un reductor válido
react title (4)
No hemos podido encontrar nada aquí con respecto a este error "La tienda no tiene un reductor válido. Asegúrese de que el argumento pasado a combineReducers es un objeto cuyos valores son reductores.", Probablemente porque es demasiado estúpido.
Mi reductor
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;
}
Combinador
import { combineReducers } from ''redux'';
import { FriendListReducer } from ''./FriendListReducer'';
const rootReducer = combineReducers({
friends: FriendListReducer
});
export default rootReducer;
Mi configuración de tienda
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;
}
../reducers/reducers? es un nombre extraño
De todos modos, parece que ../reducers/reducers no devuelve un reductor, si los reductores son un directorio, pon un index.js adentro, importa cada reductor y crea un reductor de raíz
import FriendListReducer from "./FriendListReducer"
const rootReducer = combineReducers({
friendList : FriendListReducer
})
export default rootReducer
Tendrás state.friendList en tu estado.
Espero que ayude
Parece que su función reductora de nivel superior usa una matriz como valor predeterminado. Redux espera que la parte superior de su estado sea un objeto, no una matriz. Intenta poner la matriz en una clave particular en ese objeto, como { friendList : [] }
.
Su declaración de import
es incorrecta. O bien usa la import { Foo } from ''bar''
junto con la export Foo
, o usa import Foo from ''bar''
si exporta con la export default Foo
.
En otras palabras, cambie export default function FriendListReducer
para export function FriendListReducer
, o cambie la instrucción de import { FriendListReducer }
de la import { FriendListReducer }
para import FriendListReducer
.
Si el objeto está vacío
export default combineReducers({
})
Este error se mostrará.