React-dnd: Unterstützung für React 16.3 createRef-Ref-Typ hinzugefügt

Erstellt am 3. Apr. 2018  ·  13Kommentare  ·  Quelle: react-dnd/react-dnd

Die Verwendung von connectDragSource mit einem Element, das die neue createRef-API (eingeführt in React 16.3.0) anstelle von Callback-Refs verwendet, führt zum Absturz der App mit dem Fehler: TypeError: previousRef is not a function .

https://github.com/facebook/react/pull/12162

enhancement

Hilfreichster Kommentar

Gleicher Fehler. Soll ich wieder die alte Rückrufreferenz verwenden oder gibt es eine Möglichkeit, dies zu umgehen?

Alle 13 Kommentare

Dies ist die Ausgabe des Browsers:

    return (0, _react.cloneElement)(element, {
        ref: function ref(node) {
            newRef(node);

            if (previousRef) {
                previousRef(node); // << fails with new refs
            }
        }
    });

Gleicher Fehler. Zum ersten Mal habe ich endlich die Gelegenheit, die neuen Refs zu verwenden, und React-dnd ist im Weg.

Langfristig bin ich mir nicht sicher, ob das gesamte React-dnd-Modell mit findDOMNode und dem Ersetzen der ref. Wenn React neue createRef und withRef hat. Neue forwardRef-API . Und eine Reihe von APIs beginnen, Render-Requisiten zu verwenden.

Aber vorerst sollte es ausreichen zu prüfen, ob previousRef ein Objekt mit einer current Eigenschaft ist und diese setzen, anstatt es als Funktion aufzurufen.

Hat jemand Lösungen dafür, während er immer noch createRef() verwendet?

Ich kann später darauf eingehen, aber eine Sandbox, die zeigt, wonach Sie suchen, wäre hier großartig.

ich stehe auch vor dem gleichen Problem.
@darthtrevino https://codesandbox.io/s/733onvqwl6 vielleicht hilft diese Sandbox.

Gleicher Fehler. Soll ich wieder die alte Rückrufreferenz verwenden oder gibt es eine Möglichkeit, dies zu umgehen?

+1
die Verwendung von React.createRef() und ref.current die App zum Absturz gebracht.

Wann wird das behoben?

Immer noch nicht behoben :/

Ich werde mir nach der React-conf etwas Zeit nehmen, um das zu überprüfen

Ich konnte eine Problemumgehung verwenden, wie vorgeschlagen, indem ich das ref-Div in ein anderes leeres Div einkapselte.
Beispiel:

 <div>
        <div
          style={{
            position: "relative",
            borderStyle: "dashed",
            width: 300,
            height: 200,
            position: "relative"
          }}
          ref={this.myRef}
        />
      </div>

👍 jedes Update zu diesem @darthtrevino. Wäre toll ein Update zu hören

@darthtrevino Das gleiche Problem ist

sollte heute sein denke ich. Lassen Sie mich wissen, wenn es Probleme mit der Veröffentlichung gibt, die ich später geschnitten habe

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen