1. ホーム
  2. javascript

[解決済み] redux-sagaでgetState?

2023-04-24 06:25:14

質問

私は、アイテムのリストを持つストアを持っています。アプリが最初にロードされたとき、アイテムに基づいていくつかのインメモリオブジェクトを作成するように、アイテムをデシリアライズする必要があります。アイテムは私のreduxストアに格納され、そのストアは itemsReducer .

を使おうとしているのですが redux-saga を使ってデシリアライズを処理しようとしています。最初のページロード時に、私はアクションをディスパッチします。

dispatch( deserializeItems() );

私のサーガはシンプルに設定されています。

function* deserialize( action ) {
    // How to getState here??
    yield put({ type: 'DESERISLIZE_COMPLETE' });
}

function* mySaga() {
    yield* takeEvery( 'DESERIALIZE', deserialize );
}

私のdeserialize sagaでは、アイテムのインメモリバージョンを作成するという副作用を処理したいので、ストアから既存のデータを読み込む必要があります。ここでそれをどのように行うか、あるいはredux-sagaで試みるべきパターンであるかどうか、よくわかりません。

どのように解決するのですか?

を使用することができます。 効果を選択する

import {select, ...} from 'redux-saga/effects'

function* deserialize( action ) {
    const state = yield select();
    ....
    yield put({ type: 'DESERIALIZE_COMPLETE' });
}

また、セレクタで使用することもできます。

const getItems = state => state.items;

function* deserialize( action ) {
    const items = yield select(getItems);
    ....
    yield put({ type: 'DESERIALIZE_COMPLETE' });
}