切换语言环境后强制更新语言环境格式

时间:2018-11-01 20:58:36

标签: reactjs momentjs locale

我在我的React项目中使用momentjs。我已经通过React Context API实现了语言环境配置,但事实证明,更改momentjs的全局语言环境不会影响现有对象。从2.8.0版开始,这是一项功能,请参见Changing locale globally

moment.locale();       // 'en'
const m = moment();
m.format("L");         // 11/01/2018
moment.locale("de"));  // 'de'
m.format("L");         // 11/01/2018

LocaleProvider组件切换语言环境。

// LocaleProvider class component
onChangeLocale = locale => moment.locale(locale);

子组件呈现特定于语言环境的momentjs实例。

// child element class component
render() {
  const { currentDate } = this.state;
  return <div>{currentDate.format("L")}<div>;
} 

如何强制现有的momentjs对象使用更改后的语言环境?

1 个答案:

答案 0 :(得分:0)

我通过在呈现组件时用locale显式设置全局moment.locale()来解决了这个问题。

// child element class component
import moment from "moment";

render() {
  const { currentDate } = this.state;
  return <div>{currentDate.locale(moment.locale()).format("L")}<div>;
}