Сага не зовет реагировать на родных - PullRequest
0 голосов
/ 30 апреля 2018

У меня есть этот код магазина саги-редуктора, который теоретически должен запускать событие саги на dispatch, но я вижу, что никаких действий не происходит вообще. Этот код работает на реагировать.

Соответствующий вопрос SO: Redux saga - рабочая сага не вызывается по реагирующему нативу , но решение устарело, поскольку take* форма redux-saga устарела.

Код ниже -

  • App.js вызывает configureStore (), который возвращает store и запускает сагу промежуточное программное обеспечение.
  • Store вызывает rootSaga.js, который возвращает все саги.
  • rootSaga.js вызывает loginSaga.js (userLogin) Saga

rootSaga.js

import { takeEvery } from "redux-saga/effects";
export function* rootSaga() {
    yield takeEvery(LoginSagaConstants.LOGIN, userLogin)
}

loginSaga.js

export function* userLogin(action) {
   console.log("userLogin not getting called");
   const response = yield call(LoginAPI.login, action.user);
   console.log(response);
   ...
}

loginScreen.js

console.log("start dispatching");
dispatch({
    type: sagaConstants.LOGIN,
    user: {
        username: "username",
        password: "password",
        robottest : "robottest"
    }
});

store.js

import {createStore, applyMiddleware, compose} from "redux";
import {createLogger} from 'redux-logger'
import createSagaMiddleware from 'redux-saga'
const initialState = {};

// import all Reducers
import {reducers} from "./reducers";

// import all Sagas
import { rootSaga } from "./sagas";

// define middlewares
let middlewares = [];

// create and add the saga middleware
const sagaMiddleware = createSagaMiddleware();
middlewares.push(sagaMiddleware);

//add the freeze and logger dev middleware
if (process.env.NODE_ENV !== 'production') {
    middlewares.push(createLogger());
}

// apply the middleware
let middleware = applyMiddleware(...middlewares);

const enhancer = compose(
    middleware
)

export default function configureStore() {
    const store = createStore(reducers, initialState, enhancer);
    // run saga middleware
    sagaMiddleware.run(rootSaga);
    return store;
}

App.js

...
import configureStore from './store'
const store = configureStore();
...
render() {
     return (
         <Provider store={store}>
             <RootStack/>
         </Provider>
    );
}

моя консоль только печатает start dispatching и больше ничего не происходит.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...