Почему в Sase-Redag вместо рассылки используется метод put? - PullRequest
0 голосов
/ 24 мая 2018

В демонстрационном примере в файле README в рабочей саге используется функция с именем put() вместо dispatch().

...

// worker Saga: will be fired on USER_FETCH_REQUESTED actions
function* fetchUser(action) {
   try {
      const user = yield call(Api.fetchUser, action.payload.userId);
      yield put({type: "USER_FETCH_SUCCEEDED", user: user});
   } catch (e) {
      yield put({type: "USER_FETCH_FAILED", message: e.message});
   }
}

...

1 Ответ

0 голосов
/ 24 мая 2018

Redux-Sagas основан на функциях генератора .Каждый раз, когда вы вызываете один из них, он выполняется, пока не достигнет yield.Это, помимо того, что вы можете выполнять асинхронные действия в ожидании обещаний, имеет ряд преимуществ, например, при тестировании.

По сути, в процессе тестирования здесь избегают насмешек.Для этого применяется декларативный подход.Дело в том, что вы не отправляете (и на самом деле ничего не делаете), промежуточное ПО делает .Это промежуточное ПО предоставляется только с объектами, называемыми Effects .Итак, put сделает для создания объекта Effect, который промежуточное программное обеспечение будет «читать».Затем он отправит действие и использует next(result)result, являющимся результатом того, что Эффект велел промежуточному программному обеспечению) , чтобы перейти к следующему выходу и получить следующий эффект ,Вы можете прочитать больше об этом здесь .

Помните, что основные преимущества redux-sagas по сравнению с redux-thunk появляются, когда тестирование наступает . Возможность просто объявить, какой Эффект будет возвращаться каждым путом, вызывать ... , а затем просто выполнять итерацию от yield до yield вместо того, чтобы имитировать вызовы или диспетчеризацию API-вызовов.пункт продажи редукс-саг.Вам, вероятно, нужно прочитать и попрактиковаться еще немного, прежде чем вы полностью овладеете концепцией, но я надеюсь, что мое объяснение решит ваши сомнения.

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