JSX Reagieren HTML5 Input-Regler Funktioniert nicht
Ich bin mit React.JS für einen build, und bin Gebäude eine Reihe input-regler mit zwei Entscheidungen, die für eine Komponente.
dies ist mein code:
<input id="typeinp" type="range" min="0" max="5" value="3" step="1"/>
Wenn ich ihn in meine client-side rendering-Komponente, und versuchen Sie wechseln es nicht zu bewegen. Testen Sie es auf eine JS/PHP bauen, ich habe zu gehen auf, es funktioniert gut.
Warum funktioniert das nicht in JSX/React.JS und was wäre eine empfohlene umgehen?
Dank!
- Und was hat das client-side-rendering-Komponente Aussehen ?
InformationsquelleAutor CodeFromthe510 | 2016-03-21
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Benutzer-Interaktionen haben keine Wirkung, da ein
<input>
mitvalue
prop ist als gesteuert. Es bedeutet, dass der angezeigte Wert wird kontrolliert, vollständig vonrender
Funktion. Eigentlich auch So zu aktualisieren, Eingabe Wert, den Sie verwenden sollten, dieonChange
Veranstaltung. Beispiel:Können Sie auch
defaultValue
stattvalue
. In diesem Fall<input>
als unkontrollierte und alle user-Interaktionen werden sofort durch element selbst, ohne Berufung aufrender
Funktion der Komponente.Mehr dazu in der offiziellen Dokumentation
getInitialState
- Methode bei der Verwendung Reagieren.createClass.Ich denke, dass die vorherigen Antworten dein problem lösen. Ich würde jedoch sagen, dass die Lösung nicht beteiligt werden müssen, Reagieren die Staaten.
Ist der einzige Grund hinter Ihrem gefrorenen input-regler ist, dass Sie die hardcoded dessen Wert auf 3, da @Colin Whitmarsh schlägt.
Einfach funktioniert dies:
Nun, Sie müssen wahrscheinlich Ihren Ausgang, um etwas zu tun. Sie können
onChange={this.handleChange}
wie @xCrZx Staaten in seiner Antwort. Aber im innerenhandleChange
Sie nicht unbedingt haben, aktualisieren Sie Ihren Status. Je nach deiner Logik könnte man vermeiden, die Erhöhung der Komplexität Ihres Staates und einfach code Ihrer Logik innerhalbhandleChange
.Wenn Sie vermeiden Sie die Aktualisierung der Staat, werden Sie wahrscheinlich sparen Sie einige macht und Ihre Leistung zu verbessern.
Versuchen Sie dies:
Schlage ich vor, changing value="3" defaultValue="3", sonst finde ich den Wert fest auf "3" und kann schwierig oder unmöglich zu ändern. Das onInput-Funktion feststellt, dass der Wert und fügt es dem Staat so die Daten übergeben werden können, zu einer anderen Komponente oder Funktion. Es gibt wahrscheinlich eine elegantere Lösung für dein problem, aber die oben sollte funktionieren.
Hier eine Lösung in form von mehreren Schiebereglern oder sogar einen einzigen Schieberegler, mit dem event-handler übergeben
wir können einfach mit HTML-Eingabe Typ Auswahl
rc-regler und reagieren-input-range nicht gesendet event-handler
onChange
oderonAfterChange
Sie sendet den Wert des Reglers Implizit, so können wir nicht umgehen form von Schiebereglern oder erstellen Sie on-the-fly.jsfiddle-snippet
Weitere können wir überprüfen, HTML-Eingabebereich und CSS zur Verfügung gestellt von CSS-Tricks
JS:
CSS:
HTML:
Diese Lösung funktioniert perfekt bei mir 😉
Mit CodeSandbox