2016-04-18 6 views
0

Ich verwende dangerouslySetInnerHTML zum Rendern eines JS-Skript-Tags in einer meiner Komponenten zum Laden von DFP-Anzeigenblöcken. Meine Seite wird zuerst auf dem Server gerendert, dann wird derselbe Code auch auf den Client geladen.Verhindern, dass ReagenthreadlySetInnerHTML clientseitig aufruft

Das Problem ist, dass der DFP-Code document.write verwendet, um ein Skript zu injizieren, und sobald mein clientseitiger Code geladen wird, wird dieser abgebrochen, da höchstwahrscheinlich dangerouslySetInnerHTML erneut aufgerufen wird und das Skript zuerst auf dem Server gerendert wird.

Irgendeine Idee, wie man das umgeht?

Antwort

0

Wenn der Inhalt der Komponente nach dem anfänglichen Rendern nicht geändert werden soll, definieren Sie in Ihrer Komponente , und legen Sie fest, dass immer false zurückgegeben wird. Auf diese Weise können Sie verhindern, dass die Komponente jemals über das ursprüngliche Rendern hinaus aktualisiert wird.

0

Das Problem war, dass es einige Rendering-Unterschiede zwischen Server und Client gab, so dass React Teile des DOM (oder vielleicht alles) patchen und damit den iframe der Anzeige brach.

Dies geschah nur in der Produktion, so dass die Warnungen nicht auftauchten.

Genauer gesagt wurde der Unterschied durch das Moment verursacht, das einige Daten relativ zur Zeitzone des Rechners darstellt, die sich von Server zu Client unterscheidet.