import i18n from "i18next"; import { CHANGE_LANGUAGE, ADD_LANGUAGE, languageActionTypes, } from "./languageActions"; export interface LanguageState { language: "en" | "zh"; languageList: { name: string; code: string }[]; } const defaultState: LanguageState = { language: "zh", languageList: [ { name: "中文", code: "zh" }, { name: "English", code: "en" }, ], }; // eslint-disable-next-line import/no-anonymous-default-export export default (state = defaultState, action: languageActionTypes) => { switch (action.type) { case CHANGE_LANGUAGE: i18n.changeLanguage(action.payload); //此处会导致不是纯函数 return { ...state, language: action.payload }; case ADD_LANGUAGE: return { ...state, languageList: [...state.languageList, action.payload], }; default: return state; } };