Dynami c импорт для вычисляемых спецификаторов модулей (зацикливание на массиве локалей) - PullRequest
0 голосов
/ 14 марта 2020

В настоящее время я настраиваю интернационализацию / i18n для приложения React, используя i18next и Reaction-i18next. Я в основном следую документации здесь для конфигурации i18next и здесь для форматирования с Moment. js.

Для Moment. js возможно либо импортировать все локали, как это:

import 'moment/min/locales'

или индивидуально для каждой локали, как это:

import 'moment/locale/en-gb'
import 'moment/locale/fr'
// Shortened for this example...

У меня есть массив SupportLocales с языковыми разновидностями:

const supportedLocales = ['en', 'en-GB', 'fr', 'fr-CA', 'es'] // Shortened for this example...

Сначала мне было интересно, существует ли способ «динамического импорта» вычисляемых спецификаторов модулей, например:

// Import Moment.js supportedLocales (other than default `en`).
supportedLocales.forEach(locale => {
    if (locale !== 'en') {
        import(`moment/locale/${locale}`)
    }
})

Но у меня есть предупреждение ESLint:

eslint: error no -unused-expressions - ожидал присваивания или вызова функции и вместо этого видел выражение.

Мне также было интересно, можем ли мы еще go дальше и импортировать спецификатор модуля только при необходимости (если есть любой интерес в этом):

// Listen to the change language event to keep Moment.js locale in sync.
i18n.on('languageChanged', newLocale => {
    moment.locale(newLocale)
    import(`moment/locale/${locale}`)
})
...