Перед монтированием компонента вы можете получить неопределенное значение, а элемент рендеринга с неопределенным вызовет ошибку.
Возвращать элемент, только если не неопределено:
if(lang && messages) {
return (
<IntlProvider key={ lang } locale={lang} messages={messages}>
</IntlProvider>
)
} else {
return null
}
Стенография:
return lang && messages &&
<IntlProvider key={ lang } locale={lang} messages={messages}>
</IntlProvider> ||
null
Теперь это обеспечит отображение элемента только в том случае, если определен lang (который появляется после монтирования компонента), и вы не увидите ошибок. Это рендерит null
при первом рендеринге, а после того, как вы получите значение, он будет рендерить элемент.
Да, очевидно, если вы хотите визуализировать элемент без языка и сообщений при первой загрузке, вы можете использовать:
return <IntlProvider
key={ lang || 'en' } {/* en as default */}
locale={lang || 'en'}
messages={messages || ''}>
</IntlProvider>