1. ホーム
  2. javascript

[解決済み] redux-sagaの関数内でstate/storeから何かを取得するにはどうしたらいいですか?

2022-04-27 22:59:32

質問

Sagaの関数内でreduxのステートにアクセスするにはどうすればよいですか?

短い回答です。

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

解決方法は?

すでに@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});
  }
}

さらに、提案された doc は、@markerikson によって、非常に優れた ビデオチュートリアル の使い方を説明したD.アブラモフによるものです。 selectors をReduxで使用することができます。また これ のスレッドがあります。