关于如何处理i18n

来源:9-9 【中间件】自定义中间件 actionLog

mc浅

2021-03-08

老师是不是创建一个中间件,然后判断当前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回答

阿莱克斯刘

2021-03-10

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

1
1
mc浅
非常感谢!
2021-03-10
共1条回复

React18 系统精讲 结合TS打造旅游电商平台

React18 精讲 + 结合 TS 实战 + 热门业务开发,获取必备技能

1993 学习 · 1015 问题

查看课程