React-tags: Warnung zur Eingangskomponente

Erstellt am 18. Sept. 2018  ·  7Kommentare  ·  Quelle: i-like-robots/react-tags

Ich erhalte eine Warnung mit ReactTags :

Warning: Failed prop type: You provided a `value` prop to a form field without an `onChange` handler. This will render a read-only field. If the field should be mutable use `defaultValue`. Otherwise, set either `onChange` or `readOnly`.
    in input (created by Input)
    in div (created by Input)
    in Input (created by ReactTags)
    in div (created by ReactTags)
    in div (created by ReactTags)

Von dem, was hier gesagt wird , sollten wir https://github.com/i-like-robots/react-tags/blob/master/lib/Input.js#L78 wahrscheinlich um etwas ändern wie:
defaultValue={query}

Was denken Sie?
Vielen Dank!

bug unconfirmed

Hilfreichster Kommentar

Ich habe einen PR hinzugefügt, um in defaultValue zu ändern, aber wenn Sie einen Hack wünschen, der die Warnung vermeidet, bis dies behoben ist, können Sie Ihrer Klasse eine noop-Methode hinzufügen, die ReactTags verwendet, und als onChange für Ihre Komponente darauf verweisen. Es ist hässlich, aber es wird die Warnungen stoppen.

noOp() {
    // does nothing
}

<ReactTags
tags={this.state.tags}
suggestions={this.state.suggestions}
handleAddition={this.handleTagAddition}
handleDelete={this.handleTagDelete}
inputAttributes={{ onChange: this.noOp }}
/>

Alle 7 Kommentare

Ich habe das gleiche Problem, irgendwelche Vorschläge?

Ich habe das leider nicht selbst gesehen. Könnten Sie mir bitte mitteilen, welche React-Version Sie verwenden?

Ich verwende React 16.3.2

@i-like-robots Ich habe auch dieses Problem.

Ich habe einen PR hinzugefügt, um in defaultValue zu ändern, aber wenn Sie einen Hack wünschen, der die Warnung vermeidet, bis dies behoben ist, können Sie Ihrer Klasse eine noop-Methode hinzufügen, die ReactTags verwendet, und als onChange für Ihre Komponente darauf verweisen. Es ist hässlich, aber es wird die Warnungen stoppen.

noOp() {
    // does nothing
}

<ReactTags
tags={this.state.tags}
suggestions={this.state.suggestions}
handleAddition={this.handleTagAddition}
handleDelete={this.handleTagDelete}
inputAttributes={{ onChange: this.noOp }}
/>

Dies ist ein interessantes Thema, das vor einigen Jahren in https://github.com/facebook/react/issues/1118 ausführlich diskutiert wurde (obwohl ich diese Warnung bei keiner Version von React einschließlich 16.3.2 gesehen habe! )

An der aktuellen Implementierung ist technisch nichts _falsch_, aber ich stimme zu, dass Warnungen, die die Konsole überladen, ärgerlich sind und vermieden werden sollten.

Ich bin mir nicht sicher, ob die Einstellung von defaultValue die richtige Lösung ist, da dies unbeabsichtigte Folgen haben kann (siehe https://github.com/i-like-robots/react-tags/pull/139#issuecomment-431006214 ), aber es sind möglicherweise mehrere andere Problemumgehungen verfügbar.

Wenn ich mir das genauer ansehe, kann ich sehen, dass diese Warnung 5 Bedingungen hat:

https://github.com/facebook/react/blob/b87aabdfe1b7461e7331abb3601d9e6bb27544bc/packages/react-dom/src/shared/ReactControlledValuePropTypes.js#L32 -L46

Dies ist die erste Bedingung, die mich interessiert, da dies standardmäßig zu true ausgewertet werden sollte, da der Standardwert für state.query eine leere Zeichenfolge ist. Dies sollte daher dazu führen, dass die Funktion vorzeitig zurückkehrt und keine Warnung ausgibt.

Um diese Warnung auszulösen, musste ich daher den Standardzustand (https://github.com/i-like-robots/react-tags/blob/master/lib/ReactTags.js#L35) ändern, um einen wahrheitsgetreuen Wert zu erhalten.

Hat jemand von euch, der diese Erfahrung macht, ein Beispiel, das das Problem demonstriert, damit ich es mir genauer ansehen kann?

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen

Verwandte Themen

yrik picture yrik  ·  10Kommentare

ekinalcar picture ekinalcar  ·  10Kommentare

williamsidewalk picture williamsidewalk  ·  4Kommentare

filippofilip95 picture filippofilip95  ·  4Kommentare

yrik picture yrik  ·  4Kommentare