Development Tip

redux-saga의 getState?

yourdevel 2020. 11. 29. 12:22
반응형

redux-saga의 getState?


항목 목록이있는 상점이 있습니다. 내 앱이 처음로드 될 때 항목을 기반으로 일부 메모리 내 개체를 만드는 것처럼 항목을 deserialize해야합니다. 항목은 내 redux 저장소에 저장되고 itemsReducer.

부작용으로 역 직렬화를 처리 하기 위해 redux-saga 를 사용하려고합니다 . 첫 페이지로드시 액션을 전달합니다.

dispatch( deserializeItems() );

내 saga는 간단하게 설정됩니다.

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' });
}

Saga가 코드 흐름을 처리하지 않는 콜백 함수에서는 Select 효과가 도움이되지 않습니다. 이 경우 통과 dispatch하고 getStatesaga를 루트합니다.

store.runSaga(rootSaga, store.dispatch, store.getState)

그리고 자식 무용담에 매개 변수를 전달

export default function* root(dispatch, getState) { yield all([ fork(loginFlow, dispatch, getState), ]) }

그런 다음 시계 방법에서

export default function* watchSomething(dispatch, getState) ...

참고 URL : https://stackoverflow.com/questions/38405700/getstate-in-redux-saga

반응형