как состояние вытягивается в sagas.js при использовании сагы редукса с реакцией - PullRequest
0 голосов
/ 10 марта 2019

Я читаю кодовую базу, которая включает в себя redux-saga. Я только начал с redux-saga, и я вижу, что в saga.js есть многочисленные случаи, когда состояние вырвано.

function* fetchxyz({ Id }) {
  try {
    const authToken = yield select(state => state.auth.authToken);
    const data = yield call(
      getxyz1,
      authToken,
      Id
    );
    yield put({
      type: FETCH_XYZ_SUCCESS,
      response:data
    });


}

Я немного озадачен тем, как это состояние вырвалось в этом saga.js. Я сильно чувствую, что мне где-то не хватает понимания, так как я не понимаю, как это состояние вырвалось в saga.js.

1 Ответ

1 голос
/ 11 марта 2019

Redux-saga - это промежуточное программное обеспечение для редуксов.Каждое избыточное промежуточное программное обеспечение имеет доступ к избыточному состоянию через функцию getState.

Документы Redux: https://redux.js.org/api/applymiddleware#arguments

Использование Redux-саги: https://github.com/redux-saga/redux-saga/blob/master/packages/core/src/internal/middleware.js#L13

Саги - это генераторы, по которым библиотека redux-saga итерирует, а затем работает с полученным человеком.последствия.Чтобы получить доступ к состоянию в Redx Saga, вы используете эффект select, как в вашем примере.

Итак, все, что делает redux-saga, - это вызывает предоставленную функцию селектора с возвращаемым значением функции getState в качестве еепараметр.

https://github.com/redux-saga/redux-saga/blob/master/packages/core/src/internal/effectRunnerMap.js#L282

Полученное выражение может быть вычислено в возвращаемом значении функции выбора путем передачи возвращаемого значения в качестве параметра функции next на итераторе.Это обычное поведение генератора:

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/function*#Passing_arguments_into_Generators

...