Действие Redux не связано с сагой - PullRequest
0 голосов
/ 15 января 2020

В своем приложении React я использую промежуточное программное обеспечение saga. Это моя root сага.

import { all } from 'redux-saga/effects';

import alertSaga from 'redux/alert/alert.saga';

export default function* rootSaga() {
  console.log('ROOT SAGA')
  yield all([
    alertSaga(),
  ]);
}

Это магазин.

import { applyMiddleware, createStore } from 'redux';
import { composeWithDevTools } from 'redux-devtools-extension';
import { persistStore } from 'redux-persist';
import createSagaMiddleware from 'redux-saga';

import rootReducer from './root-reducer';
import rootSaga from './root-saga';

const INITIAL_STATE = {};

const sagaMiddleware = createSagaMiddleware();
const middleware = [sagaMiddleware];

const store = createStore(
  rootReducer,
  INITIAL_STATE,
  composeWithDevTools(applyMiddleware(...middleware)),
);

sagaMiddleware.run(rootSaga);

const persistor = persistStore(store);

export { store, persistor };

Это мое оповещениеСага .

import { put, takeEvery } from 'redux-saga/effects';

import { IAction } from 'constants/types.constant';
import { removeAlert, setAlert } from 'redux/alert/alert.actions';
import { SET_ALERT } from 'redux/alert/alert.types';

export function* displayAlert({ type, payload }: IAction) {
  console.log(type);
  console.log(payload);
  // yield put(setAlert({ type, payload }));

  try {
    yield put({ type: SET_ALERT, payload });
  } catch (error) {

  }

  // setTimeout(() => yield put(removeAlert(payload.id), 3000));
}

function* alertSaga() {
  console.log('HELLO');
  yield takeEvery(SET_ALERT, displayAlert);
}

export default alertSaga;

Наконец, это мое действие по предупреждению.

import { REMOVE_ALERT, SET_ALERT } from './alert.types';

export const setAlert = (payload: Object) => ({ type: SET_ALERT, payload });

export const removeAlert = (payload: number) => ({ type: REMOVE_ALERT, payload });

Когда отправляется setAlert, оно не попадает в предупреждение сага. Что я тут не так делаю?

1 Ответ

0 голосов
/ 15 января 2020

, если вы хотите экспортировать только 1 сагу, попробуйте ниже

export default function* alertSaga() {
  console.log('HELLO');
  yield takeEvery(SET_ALERT, displayAlert);
}

или если у вас есть несколько саг для экспорта

export default function* yourSagas() {
  yield all([
    alertSaga(),
    otherSaga(),
  ]);
}
...