Ir para o conteúdo principal

Guia de Atualização (v4 -> v5)

Tradução Beta Não Oficial

Esta página foi traduzida por PageTurner AI (beta). Não é oficialmente endossada pelo projeto. Encontrou um erro? Reportar problema →

Alterações de API que Quebram Compatibilidade

  • A função de callback para formatação de rich text não é mais variádica.

Antes:

new IntlMessageFormat('a<b>strong</b>').format({
b: (...chunks) => <strong>{chunks}</strong>,
})

Depois:

new IntlMessageFormat('a<b>strong</b>').format({
b: chunks => <strong>{chunks}</strong>,
})
  • A prop render do FormattedMessage não é mais variádica.

Antes:

<FormattedMessage defaultMessage="a<b>strong</b>">
{(...chunks) => <b>{chunks}</b>}
</FormattedMessage>

Depois:

<FormattedMessage defaultMessage="a<b>strong</b>">
{chunks => <b>{chunks}</b>}
</FormattedMessage>
  • Usar FormattedMessage sem um contexto intl causará falha imediata.

Por que estamos fazendo essas alterações?

A função de callback para formatação de rich text não é mais variádica

  • Recebemos feedback da comunidade de que funções callback variádicas não são ergonômicas.

  • Existe também um problema onde os chunks do React não possuem keys, causando warnings durante o desenvolvimento.

  • Os chunks por si só não são suficientes para renderizar tags duplicadas, como <a>link</a> and another <a>link</a> onde você deseja renderizar 2 hrefs diferentes para a tag <a>. Neste caso a: chunks => <a>{chunks}</a> não basta, especialmente com conteúdos idênticos. Futuramente podemos adicionar outro argumento que pode conter metadados para diferenciar os 2 elementos.

A prop render do FormattedMessage não é mais variádica

  • Mesmos motivos citados acima.

FormattedMessage sem contexto intl causa falha imediata

  • Baseado em feedback de desenvolvedores da Dropbox. O FormattedMessage tinha um renderizador padrão em inglês que mascarava problemas de configuração do Provider, fazendo com que não fossem detectados durante os testes.