React redux-saga на стороне сервера не выполняет никаких действий после перезагрузки браузера - PullRequest
0 голосов
/ 05 декабря 2018

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

Вот абстрактный пример

// *Header.js*
class Header extends React.PureComponent {
   componentWillMount() {
     this.props.doAction()
   }
   ....
}
export default connect(null, {doAction})(Header)


// *actions.js*
function doAction() {
   return {
      type: "action"
   }
}


// *saga.js*
function* doAsyncAction(action) {
  console.log(action);
}

function* watchAction() {
   yield takeEvery("action", doAsyncAction);
}

export default [
  watchAction(),
];


// *sagas.js*  --> root saga
import 'regenerator-runtime/runtime';
import saga from './saga';
import anotherSaga from './anotherSaga'

export default function* rootSaga() {
   yield all([].concat(saga).concat(anotherSaga));
}


// *configureStore.js*
const sagaMiddleware = createSagaMiddleware();
const middleware = applyMiddleware(sagaMiddleware);
...
sagaMiddleware.run(require('./sagas').default);

И после первый запуск процесса узла -он запускается и выдает мне консольный журнал, но когда я просто обновляю браузер и функция doAsyncAction никогда не выполняется

Пожалуйста, помогите, что я делаю не так?

1 Ответ

0 голосов
/ 06 декабря 2018

Вам нужно изменить это:

function doAction() {
  return {
   type: "action"
  }
}

на это:

const mapDispatchtoProps = (dispatch) => {
  return {
   doAction: () => dispatch({type: "action"})
  }
}

export default connect(null, mapDispatchtoProps)(Header)

Client.js, приведенный ниже для промежуточного программного обеспечения саги:

const sagaMiddleware = createSagaMiddleware()
const createStoreWithMiddleware = applyMiddleware(sagaMiddleware)(createStore)

let store = createStoreWithMiddleware(rootReducers)

sagaMiddleware.run(rootSaga)

Вышереализуется везде, где вы реализуете свой магазин.

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