2016-07-15 10 views
23

Öğelerin bir listesini içeren bir mağazam var. Uygulamam ilk yüklendiğinde, öğelere bağlı olarak bazı bellek içi nesneleri oluştururken öğelerin serisini almam gerekir. Ürünler redux mağazamda saklanır ve bir itemsReducer ile işlenir.getState?

Bir yan etki olarak serileştirmeyi işlemek için redux-saga kullanmaya çalışıyorum. ilk sayfa yük, ben bir eylem sevk:

Benim destan basitçe kurulur
dispatch(deserializeItems()); 

:

Ben bellek içi sürümlerini oluşturarak yan etkisi işlemek istiyorum benim serisi kaldırılmaya destan, içinde
function* deserialize(action) { 
    // How to getState here?? 
    yield put({ type: 'DESERISLIZE_COMPLETE' }); 
} 

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

Öğelerimden, mevcut verileri mağazadan okumam gerekiyor. Burada nasıl yapılacağından emin değilim, ya da eğer bu bir desense, redux-saga ile girişimde bulunmalıyım.

cevap

81

biz eğer kod akışı ele değilken

const getItems = state => state.items; 

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

seç etkisi bir geri arama fonksiyonları bize yardımcı olmuyor sen seçicileri ile kullanabilirsiniz da select effect

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

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

kullanabilirsiniz Saga tarafından. Bu durumda sadece kök destan dispatch ve getState pass: izle yöntemlerinde sonra çocuk destanları

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

için

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

Ve geçiş parametreleri Ve

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

İlgili konular