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 上の興味深いスレッド。