首页 > 解决方案 > 在不使用 redux saga 调用 api 的情况下更改我的状态?

问题描述

我有话要问,我看到文档中总是有对 api 的调用,但是在将变量从法语更改为英语或相反时,我不需要任何 API,那么我该怎么做呢?

这是我迄今为止尝试过的:

<Button
   content={intl("FRENCH")}
   type="link"
   color="link"
   size="medium"
   entire={false}
   onClick={() =>
     this.props.changeLanguage({ language: "ENGLISH_LANGUAGE" })
   }
   >
</Button>

我的行动 changeLanguage 工作得很好,我用控制台日志测试了它,这里是行动:

export const changeLanguage = ({ language }) => {
  console.log(language);
  return {
    type: language
  };
};

这是我的传奇:

import { changeLanguage } from "../../Actions/Language/language";
import { takeEvery, put, call, fork } from "redux-saga/effects";

function* changeCurrentLanguage({ type }) {
  yield put({ type: "ENGLISH_LANGUAGE_CHANGE" });
}

function* watchChangeLanguage() {
  yield takeEvery("ENGLISH_LANGUAGE", changeCurrentLanguage);
}

const languageSaga = [fork(watchChangeLanguage)];

export default languageSaga;

这是根传奇:

import { all } from "redux-saga/effects";
import connectionSaga from "./Authentification/connection";
import languageSaga from "./Language/language";

export default function* rootSaga() {
  yield all([...connectionSaga, ...languageSaga]);
}

我的简单减速器:

const initialState = {
  language: "en"
};

export default function languageReducer(state = initialState, action) {
  switch (action.type) {
    case "ENGLISH_LANGUAGE_CHANGE":
      console.log("ENGLISH");
      return { ...state, language: "en" };
    case "FRENCH_LANGUAGE":
      return { ...state, language: "fr" };
    default:
      return state;
  }
}

我正在使用 put 方法来调度操作,但未触发带有 ENGLISH_LANGUAGE_CHANGE 的操作,任何帮助将不胜感激。

标签: react-reduxredux-saga

解决方案


推荐阅读