请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

关于如何处理i18n

老师是不是创建一个中间件,然后判断当前action的type,满足类型执行changeLanguage的操作?还有更好的方法吗?

import { Middleware } from "redux";
import i18n from "i18next";
import {CHANGE_LANGUAGE} from "../language/languageActions"

export const actionLanguage:Middleware = (store) => (next) => (action) => {
  if(action.type === CHANGE_LANGUAGE){
    i18n.changeLanguage(action.payload);
  }
  next(action)
};

正在回答

1回答

问题非常好。是的,理论上应该通过中间件来实现对i18n的操作,因为i18n的操作产生了副作用。但是用中间件来控制i18n比较麻烦,代码也很凌乱。所以,其实我们还是可以借助其他的第三方库来完成,比如说redux-i18n、再比如说react-redux-i18n。课程之所以没有介绍这两个插件的第一个原因是,希望同学可以自己思考一下如何控制副作用、第二个原因是这两个库还是有一定的争议。不过你能想到这个程度,并且能代码实现出来就以及很不错了。

1 回复 有任何疑惑可以回复我~
  • 提问者 mc浅 #1
    非常感谢!
    回复 有任何疑惑可以回复我~ 2021-03-10 23:17:48
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号