2017-01-12 19 views
0

私はredux-thunkからredux-sagaへの呼び出しをいくつか受けようとしています。imは何かエラーを受け取りましたので、ここではsaga以下の2つの関数のコード例があります。いくつかのいずれかが、それは大きな助けRedux-SunkからRedux-SagaへのRedux-Thunk

var LOAD_TRANSLATIONS = exports.LOAD_TRANSLATIONS = 'loadTranslation'; 
// redux-thunk 
var loadTranslations = exports.loadTranslations = function loadTranslations(translations) { 
return function (dispatch) { 
    _index.I18n.forceComponentsUpdate(); 
    dispatch({ 
     type: LOAD_TRANSLATIONS, 
     translations: translations 
    }); 
    }; 
}; 

// saga 
function* loadTranslations() { 
    const lang = yield take(LOAD_TRANSLATIONS); 
    yield fork(getLang, lang); 
} 

function* getLang(lang){ 
    console.log(lang); 
    yield put({ 
     type: LOAD_TRANSLATIONS, 
    translations: lang 
}); 
} 


// redux-thunk 
var SET_LOCALE = exports.SET_LOCALE = 'setLocal'; 

var setLocale = exports.setLocale = function setLocale(locale) { 
    return function (dispatch) { 
    _index.I18n.forceComponentsUpdate(); 
    dispatch({ 
     type: SET_LOCALE, 
     locale: locale 
    }); 
    }; 
}; 


//saga 
function* setLocale() { 
const locale = yield take(SET_LOCALE); 
yield fork(getLocale, locale); 
} 

function* getLocale(locale){ 
console.log(locale); 
_index.I18n.forceComponentsUpdate(); 
yield put({ 
    type: SET_LOCALE, 
    locale: locale 
}); 
} 
+0

佐賀ミドルウェアの登録方法を貼り付けてください。 – gbozee

+0

佐賀この '関数*にsetLocale(){ 収率takeEvery(SET_LOCALE、のgetLocale) }' アクションは 'getLocale'生成関数に渡されるようになります。 ホームページの例を見てください。https://redux-saga.github.io/redux-saga/ – gbozee

答えて

0

になります私を助けることができるかどうかやって次の2つのパラメータ、アクションの定数および実行するための発電機を取るtakeEveryを利用することができます。だからあなたの例では、この

function* setLocale(){ 
    yield takeEvery(SET_LOCALE, getLocale) 
} 
# you could use takeEvery or takeLatest 

のように見えるかもしれないとのgetLocaleは

function* getLocale(action){ 
    console.log(action); 
    _index.I18n.forceComponentsUpdate(); 
    yield put({ 
     type: SET_LOCALE, 
     locale: action.locale 
    }); 

を渡されるアクションはあなたがより多くの情報のためhttps://redux-saga.github.io/redux-saga/上の最初の例をチェックすることができます取得します。

0

アクションがディスパッチされると、サガがトリガーされます。

これは、無限ループを引き起こすか、まったく動作しない可能性が高いことを意味します。

サガをトリガしてサガからトリガするには、(残念ながら)異なるアクションタイプを使用する必要があります。

関連する問題