Ich möchte das Videoposter und das QuellvideoJS ändern, wenn das ausgewählte Video geändert wurde
%Vor%aber ich habe Fehler:
%Vor%Titel und Beschreibung geändert, aber das Videoposter ändert sich nicht
Dies ist ein Problem mit destruktiven Bibliotheken. Im Grunde genommen rendern Sie das <video>
-Element, und dann injiziert VideoJS eine Reihe Geschwister -Elemente neben Ihrem <video>
(untergeordnete Elemente sind in Ordnung).
Reagieren versucht, das Element zu aktualisieren, und es kann nicht herausfinden, was vor sich geht, so dass es in Panik gerät und diesen Fehler gibt.
Sie haben also zwei Möglichkeiten:
Option 1: Rendern Sie <div ref="target" />
, konstruieren Sie den Videoknoten in componentDidMount und this.refs.target.appendChild(that)
, und rufen Sie dann VideoJS manuell auf. In componentWillRecieveProps müssen Sie die Quelle des Posters img direkt aktualisieren.
Option 2: verzweigen Sie video.js und lassen Sie es nur Ereignisse ausgeben, anstatt das DOM direkt zu modifizieren. Ihre Komponente würde auf diese Ereignisse reagieren, den Status ändern und das Poster, die Schaltflächen usw. rendern.
Option 1 ist einfacher, Option 2 ist potenziell effizienter und sauberer. Ich würde mit Option 1 gehen.
Keine davon ist eine gute Lösung, aber Bibliotheken, die ihren Container verlassen, spielen nicht gut mit react.
Nicht 100% verwandt, aber wenn Sie nach einer "reineren" Lösung für die Implementierung von videoJS als Komponente suchen, habe ich das gemacht ...
Der letzte Beitrag war vor einer Weile und ich weiß nicht, ob jemand eine bessere Implementierung hatte, was ich jedoch tat, war folgendes:
Ich kann keinen Code posten, aber das ist so nah an einer reinen React-Implementierung von videoJS, die ich herausgefunden habe.