Zum Hauptinhalt springen

Upgrade-Leitfaden (v4 -> v5)

Inoffizielle Beta-Übersetzung

Diese Seite wurde von PageTurner AI übersetzt (Beta). Nicht offiziell vom Projekt unterstützt. Fehler gefunden? Problem melden →

Breaking API-Änderungen

  • Die Callback-Funktion für die Rich-Text-Formatierung ist nicht mehr variadisch.

Vorher:

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

Nachher:

new IntlMessageFormat('a<b>strong</b>').format({
b: chunks => <strong>{chunks}</strong>,
})
  • Die Render-Prop von FormattedMessage ist nicht mehr variadisch.

Vorher:

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

Nachher:

<FormattedMessage defaultMessage="a<b>strong</b>">
{chunks => <b>{chunks}</b>}
</FormattedMessage>
  • Die Verwendung von FormattedMessage ohne intl-Kontext führt nun sofort zu einem Fehler.

Warum wurden diese Änderungen vorgenommen?

Rich-Text-Formatierung: Callback nicht mehr variadisch

  • Wir erhielten Community-Feedback, dass variadische Callback-Funktionen nicht ergonomisch sind.

  • Zudem verursachen React-chunks ohne Keys Warnungen während der Entwicklung.

  • Die chunks allein reichen nicht aus, um doppelte Tags zu rendern, wie z.B. <a>link</a> and another <a>link</a>, bei denen man unterschiedliche href-Werte für das <a>-Tag setzen möchte. In solchen Fällen genügt a: chunks => <a>{chunks}</a> nicht, besonders bei identischem Inhalt. Zukünftig könnte ein zusätzliches Argument mit Metadaten zur Unterscheidung hinzukommen.

FormattedMessage Render-Prop nicht mehr variadisch

  • Gleiche Gründe wie oben.

FormattedMessage ohne intl-Kontext führt zu sofortigem Fehler

  • Basierend auf Dropbox-Entwicklerfeedback: Der standardmäßige englische Renderer von FormattedMessage maskierte Provider-Konfigurationsfehler, die dadurch in Tests unentdeckt blieben.