REDUX-SAGA ERROR _this2.props.dispatch is not a function

332
06 октября 2017, 19:13

Привет всем . После использование thunk прочитал про

Redux-saga — это альтернативный подход к организации сайд-эффектов. Вместо того, чтобы диспатчить функции, которые обрабатываются redux-thunk-ом, вы создаёте сагу, которая собирает всю логику обработки внутрь себя. В отличие от thunk-ов, которые выполняются, когда вы их диспатчите, саги запускаются при старте приложения и как бы «работают в фоне». Саги слушают все экшены, которые диспатчит стор, и решают, что делать с ними.

И у саг в редаксе два преимущества по сравнению с thunk-ами: — Они позволяют организовывать сложные последовательности сайд-эффектов — И они очень легко тестируются

Хочу применить Redux-saga

function loadApi() {
    return new Promise((resolve, reject) => {
        setTimeout(() => {
            resolve(resolve('1 sec'));
        }, 3000);
    });
}
// worker Saga: будет запускаться на экшены типа `USER_FETCH_REQUESTED`
function* fetchUser(action) {
    try {
        const msg = yield call(loadApi);
        yield put({type: "ACTIVATE_GEOD", title: msg});
    }catch(e){
        console.log('error')
        yield put({type: "USER_FETCH_FAILED",  title: msg});
    }
}
function* mySaga() {
    yield takeEvery("ACTIVATE_GEOD", fetchUser);
}

ну и привязка Saga:

const sagaMiddleware = createSagaMiddleware();

function configureStore(initialState = {}) {
    const store = createStore(
        reducers,
        initialState,
        applyMiddleware(sagaMiddleware)
        //Redux middleware provides a third-party extension 

point between dispatching an action, and the moment it reaches the reducer. //Redux middleware is nothing more than a function which is invoked after an action is dispatched but before a reducer takes care of the action //applyMiddleware(ping) ) return store; }; var store = configureStore();

sagaMiddleware.run(mySaga);

Теперь когда кликаю по кнопке

 <button onClick={() =>this.props.dispatch(   
{ type: 'ACTIVATE_GEOD', title: 'UPS SAGA' }   )}>
                         REDUX-SAGA   Click Me!
                    </button>

    function mapDispatchToProps(dispatch) {
        return bindActionCreators({activateGeod, closeGeod}, dispatch)
    }

Получаю ошибку

_this2.props.dispatch is not a function Помогите мне пожалуйста получить рабочий пример от SAGA чтобы я смог дальше использовать его мозможности .

READ ALSO
Вызов функции по событию onclick [дубликат]

Вызов функции по событию onclick [дубликат]

На данный вопрос уже ответили:

300
Не корректно работает слайдер

Не корректно работает слайдер

Использую слайдер fullPagejs-master

248
Angular для прототипа стартапа

Angular для прототипа стартапа

Здравствуйте, собираемся делать прототип приложения, где нужно визуализировать графики и таблицыПриложение одностраничное

302
jquery dialog расположить в центре экрана

jquery dialog расположить в центре экрана

при открытии диалога он располагается в центре страницы, те

248