web-dev-qa-db-ja.com

React Redux Sagaは、yieldコール内でパラメーターを渡します

プロジェクトでサガを適用し始めたところです。現在、どこかで立ち往生しています。 sagaを使用して、呼び出し関数に引数を渡す必要があります。

これが佐賀県内の私のジェネレーター関数です:

  public* loadUsers() {
    const context = this;
    yield takeLatest("users/LOAD_USERS_REQUEST", function* (params) {
      const data = yield call([context.userService, context.userService.loadUsers]);
      yield put("users/LOAD_USERS_SUCCESS", data));
    });
  }

params変数をUserService.loadUsersメソッドに渡す必要があります。

これどうやってするの?

乾杯。

8
Poppy Edwards

call関数の定義によれば、

interface CallEffectFactory<R> {
  (fn: CallEffectFn<Func0>): R;
  <T1>(fn: CallEffectFn<Func1<T1>>,
       arg1: T1): R;
  <T1, T2>(fn: CallEffectFn<Func2<T1, T2>>,
           arg1: T1, arg2: T2): R;
         ....

CallEffectFnパラメータの後に引数を受け入れることがわかります。

したがって、あなたのケースでは、次のようにparams変数をcall関数の2番目の引数として渡すことができます。

  public* loadUsers() {
    const context = this;
    yield takeLatest("users/LOAD_USERS_REQUEST", function* (params) {
      const data = yield call([context.userService, context.userService.loadUsers],params);
      yield put("users/LOAD_USERS_SUCCESS", data));
    });
  }
2
CROSP