redux-saga 関数内の状態/ストアから何かを取得するにはどうすればよいでしょうか? 質問する

redux-saga 関数内の状態/ストアから何かを取得するにはどうすればよいでしょうか? 質問する

saga 関数内の redux 状態にアクセスするにはどうすればよいですか?

短い答え:

import { select } from 'redux-saga/effects';
...
let data = yield select(stateSelectorFunction);

ベストアンサー1

@markeriksonがすでに述べているように、redux-saga非常に便利なAPIを公開していますselect()selector状態の一部をサガ内で使用可能にするために、状態に対して を呼び出します。

あなたの例では、簡単な実装は次のようになります。

/*
 * Selector. The query depends by the state shape
 */
export const getProject = (state) => state.project

// Saga
export function* saveProjectTask() {
  while(true) {
    yield take(SAVE_PROJECT);
    let project = yield select(getProject); // <-- get the project
    yield call(fetch, '/api/project', { body: project, method: 'PUT' });
    yield put({type: SAVE_PROJECT_SUCCESS});
  }
}

提案に加えてドキュメント@markeriksonさんによる、とても良いビデオチュートリアルD. AbramovによるReduxでの使い方を解説していますselectors。こちらもご覧くださいこれTwitter 上の興味深いスレッド。

おすすめ記事