Принудительно обновлять формат локали после переключения локали - PullRequest
0 голосов
/ 01 ноября 2018

Я использую momentjs в моем проекте React. Я реализовал настройку локали через React Context API, но оказалось, что изменение глобальной локали momentjs не влияет на существующие объекты. Это функция начиная с версии 2.8.0, см. Глобальное изменение языкового стандарта .

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 голосов
/ 06 ноября 2018

Я решил проблему, установив глобальный 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>;
}
...