我正在尝试传递一些来自redux-thunk的对redux-saga的调用。我得到了一些错误,我对saga是个新手,所以这里的代码示例来自saga和下面的两个函数,如果有人能帮助我,这将是一个很大的帮助。
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
});
}发布于 2017-01-13 03:34:13
您可以使用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/上的第一个示例以了解更多信息。
发布于 2017-01-18 01:15:04
在sagas中调度的操作将触发sagas。
这意味着这可能会导致无限循环或根本不起作用。
你必须(不幸地)使用不同的动作类型来触发传奇和触发传奇中的缩减。
https://stackoverflow.com/questions/41621004
复制相似问题