我在我的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
对象使用更改后的语言环境?
答案 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>;
}