Redux-сага пут метод не запускает редуктор - PullRequest
0 голосов
/ 12 октября 2019

Я пытаюсь запустить редукторный редуктор, вызывая метод put в моей саге редуктора, но он не срабатывает, даже если я возвращаю тот же тип действия, который должен быть перехвачен в моем редукторе.

Это моя сага:

export function* registrationSaga(action) {
  try {
    const response = yield call(registerUser, action.payload);
    console.log(response)
    yield put({ type: REGISTER_USER_SUCCESS, response })
  } catch(error) {
    yield put({ type: REGISTER_USER_ERROR, error });
  }
}

А это мой редуктор:

export const registrationReducer = (state = {}, action) => {
let response = action.response;

switch(action.type) {
  case REGISTER_USER_SUCCESS: {
    console.log("successful registration")
    return { ...state, registration_success: response.success, registration_message: response.message };
  }

  case REGISTER_USER_ERROR:
    return { ...state, registration_success: response.success, registration_message: response.message };
  default:
    return state;
}
}

Я ожидаю увидеть «успешную регистрацию» в моей консоли и получить ееответ как опора в моем компоненте, но этого не происходит. Что должно вызывать эту проблему?

Вот мой rootReducer и храните также:

const rootReducer = () => combineReducers({
    registrationReducer,
    todoReducer
})

export default rootReducer;

и храните:

const sagaMiddleware = createSagaMiddleware()

export const store = createStore(
    rootReducer,
    applyMiddleware(sagaMiddleware)
);

sagaMiddleware.run(rootSaga)

1 Ответ

1 голос
/ 12 октября 2019

rootReducer не должно быть функцией , которая вызывает combineReducers, вместо этого должно быть возвращаемое значение combineReducers:

const rootReducer = combineReducers({
    registrationReducer,
    todoReducer,
});

export default rootReducer;

Redux API

...