2016-11-21 4 views
0

Я пытаюсь настроить хранилище редуктов с помощью промежуточного программного обеспечения саги и асинхронных действий, а также обработчиков-ретрансляторов и селекторов.redux saga не может прочитать свойство getState of undefined

Для некоторых sagamiddleware нельзя прочитать свойство getState неопределенного. Я не знаю почему.

моя структура высшего уровня НАПРАВЛ:

./src/app.js 
./src/sagas/index.js and imported sagas into this file 
./src/Containers/App/actions.js constants.js appReducer.js selectors.js 
./src/Containers/App/toplevelcomponenthere 

app.js

import sagas from './sagas'; 
import createReducer from './reducers.js'; 

const sagaMiddleware = createSagaMiddleware(); 
const createStoreWithMiddleware = applyMiddleware(reduxRouterMiddleware, 
sagaMiddleware(...sagas))(createStore); 

const store = createStoreWithMiddleware(createReducer); 
const reduxRouterMiddleware = syncHistoryWithStore(browserHistory) 

//add selectors and history 
import { selectLocationState } from './Containers/App/selectors'; 
const history = syncHistoryWithStore(browserHistory, store, { 
    selectLocationState: selectLocationState(), 
}); 

class Base extends Component { 
    render() { 
    return (
    <Provider store={store}> 
    {children} 
    </Provider> 
    ) 
    } 
} 
+1

могли бы вы добавить код с 'getState' –

+0

@KevinKloet GetState разрывов внутри внутри Redux-саги увидеть здесь https://github.com/yelouafi/redux-saga/blob/4ec433410c60eb1675ae786181651454fe766ddd/dist/redux-saga .js строка кода 1898 – mibbit

ответ

0

применить сага промежуточного слоя неправильный путь. Взгляните на examplesagaMiddlewate не принимает никаких аргументов.

Вы должны передать root saga функции store.runSaga после создания магазина, например here. И это корневая сага - единственная функция, которая будет, например, fork другими сагами, которые вы хотите использовать. Я думаю, что ваш sagas импортировал из ./sagas не одну функцию, так как вы применили к ней оператора распространения.