首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Redux-Thunk到Redux-Saga

Redux-Thunk到Redux-Saga
EN

Stack Overflow用户
提问于 2017-01-13 03:06:37
回答 2查看 692关注 0票数 0

我正在尝试传递一些来自redux-thunk的对redux-saga的调用。我得到了一些错误,我对saga是个新手,所以这里的代码示例来自saga和下面的两个函数,如果有人能帮助我,这将是一个很大的帮助。

代码语言:javascript
复制
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
 });
}
EN

回答 2

Stack Overflow用户

发布于 2017-01-13 03:34:13

您可以使用takeEvery,它接受两个参数,动作常量和要运行的生成器。因此,您的示例可能如下所示

代码语言:javascript
复制
function* setLocale(){
    yield takeEvery(SET_LOCALE, getLocale)
}
# you could use takeEvery or takeLatest

然后getLocale获取被传递的操作

代码语言:javascript
复制
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
EN

Stack Overflow用户

发布于 2017-01-18 01:15:04

在sagas中调度的操作将触发sagas。

这意味着这可能会导致无限循环或根本不起作用。

你必须(不幸地)使用不同的动作类型来触发传奇和触发传奇中的缩减。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41621004

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档