Dostaję błędu Unexpected key "characters" found in initialState argument passed to createStore. Expected to find one of the known reducer keys instead: "marvelReducer", "routing". Unexpected keys will be ignored.
React Redux nieoczekiwany klucz przeszedł do tworzenia przechowywać odnośniki
rootReducer:
import { combineReducers } from 'redux';
import { routerReducer } from 'react-router-redux';
import marvelReducer from './marvelReducer';
const rootReducer = combineReducers({
marvelReducer,
routing: routerReducer
});
export default rootReducer;
marvelReducer:
import { FETCH_MARVEL } from '../constants/constants';
import objectAssign from 'object-assign';
export default function marvelReducer(state = [], action) {
switch (action.type) {
case FETCH_MARVEL:
return objectAssign({}, state, {characters: action.data});
default:
return state;
}
}
sklepu:
import { createStore } from 'redux';
import { syncHistoryWithStore } from 'react-router-redux';
import { browserHistory } from 'react-router';
import rootReducer from '../reducers/index';
const initialState = {
characters: []
};
const store = createStore(rootReducer, initialState);
export const history = syncHistoryWithStore(browserHistory, store);
if (module.hot) {
module.hot.accept('../reducers/',() => {
const nextRootReducer = require('../reducers/index').default;
store.replaceReducer(nextRootReducer);
});
}
export default store;
I mają bardzo podobny kod w innej aplikacji i działa dobrze. Nie wiem, co tu się dzieje
ustawiając stan początkowy jako tę samą nazwę atrybutu co reduktor, czy to ostatecznie przesłoni reduktor? – erichardson30
@ erichardson30 Nie - po prostu ustawi stan początkowy, nie zastąpi reduktora. Oto trochę więcej wskazówek od [dokumentacji redux] (http://redux.js.org/docs/api/createStore.html) '[initialState] (dowolny): stan początkowy. Opcjonalnie można go określić, aby uwznioślał stan z serwera w aplikacjach uniwersalnych lub aby przywrócić wcześniej serializowaną sesję użytkownika. Jeśli wyprodukowałeś reduktor za pomocą funkcji CombineReducers, musi to być zwykły obiekt o tym samym kształcie, co klawisze do niego przekazywane. W przeciwnym razie możesz przekazać wszystko, co zrozumie Twój reduktor. " –
" Istnieje niewielka niezgodność między tym, co ustawiasz jako stan początkowy sklepu, a tym, co mówisz sklepowi, aby oczekiwał, jaki powinien być początkowy stan sklepu " Naprawdę nie mogę podążać za tym stwierdzeniem, czy możesz wyjaśnić nieco jaśniej? – stevematdavies