React: `data-reactroot =" "` verloren im Server-Rendering, wenn Element innerhalb `<context.provider>`</context.provider>

Erstellt am 5. März 2019  ·  5Kommentare  ·  Quelle: facebook/react

Möchten Sie eine Funktion anfordern oder einen Fehler melden?

Fehler.

Wie ist das aktuelle Verhalten?

Wenn Sie .renderToString() auf <React.Fragment><div>Hello!</div></React.Fragment> aufrufen, erhalten Sie <div data-reactroot="">Hello!</div> .

Viele andere Kombinationen von DOM-Stammelementen in "unsichtbaren" React-Elementen werden jedoch ohne data-reactroot="" gerendert.

zB alle folgenden produzieren <div>Hello!</div> (ohne data-reactroot="" ):

<React.Fragment><React.Fragment><div>Hello!</div></React.Fragment></React.Fragment>

<Context.Provider><div>Hello!</div></Context.Provider>

<Context.Consumer>{() => <div>Hello!</div>}</Context.Consumer>

<React.StrictMode><div>Hello!</div></React.StrictMode>

Wenn das aktuelle Verhalten ein Fehler ist, geben Sie bitte die Schritte zur Reproduktion und wenn möglich eine minimale Demo des Problems an. Fügen Sie den Link zu Ihrem JSFiddle- (https://jsfiddle.net/Luktwrdm/) oder CodeSandbox- (https://codesandbox.io/s/new) Beispiel unten ein:

Siehe oben.

Was ist das erwartete Verhalten?

Ich gehe davon aus, dass eines der obigen Beispiele ein Markup erzeugen sollte, einschließlich data-reactroot="" für das div -Element.

Welche Versionen von React und welcher Browser / welches Betriebssystem sind von diesem Problem betroffen?

Problem in allen Versionen> = 16.7.0 vorhanden, möglicherweise auch in früheren Versionen.

Dies ist ein kleines Problem - ich denke, es würde sich nur darauf auswirken, wo das Markup auf der Clientseite mit .render() rehydriert wird, anstatt mit .hydrate() - eine Verwendung, von der abgeraten wird. Die Verwendung von .render() zur Rehydratation wird jedoch weiterhin offiziell unterstützt.

Ich kann einen Fix implementieren und eine PR machen. Aber kann jemand bestätigen, dass das erwartete Verhalten das ist, was ich denke, und dass dies tatsächlich ein Fehler ist?

Server Rendering Bug

Hilfreichster Kommentar

OK, großartig. Vielen Dank für die schnelle Antwort. Ich werde so bald wie möglich eine PR einreichen - sollte in den nächsten Wochen sein.

Alle 5 Kommentare

Das klingt nach einem Fehler. Ein Fix wäre willkommen.

OK, großartig. Vielen Dank für die schnelle Antwort. Ich werde so bald wie möglich eine PR einreichen - sollte in den nächsten Wochen sein.

Ich habe eine PR # 15023 eingereicht.

@gaearon Hat jemand die Gelegenheit gehabt, meine Korrektur in PR # 15023 zu überprüfen?

Jetzt, da React-Apollo die Context-API verwendet, sind unsere Builds aus diesem Grund kaputt.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen