2017-10-04 1 views
0

Ich bin ein Neuling, um JS zu reaktivieren und eine einfache Anwendung mit Steuerelementen zu erstellen, um ein Objekt links unten nach rechts zu verschieben. Ich plane, 2 Komponenten <Object /> und <Controls /> (bestehend aus 4 Tasten) mit Event-Handlern zu position state der <Object /> Komponente zu aktualisieren. Aber ich begegne 2 problemen:React JS: Entwerfen einer App mit Steuerelementen zum Verschieben eines Objekts

  • Wo zu speichern die position state? Wie ich es verstehe, erlaubt die Flussarchitektur der Komponente <Controls /> nicht, den Komponentenstatus <Object /> zu aktualisieren.
  • Wie schreibe ich einen einzelnen Event-Handler für 4 ähnliche Schaltflächen (oben, unten, links, rechts)? Es ist in Ordnung, 4 separate Funktionen zu schreiben, aber ist es möglich, nur eine zu verwenden?

Können Sie den richtigen Weg empfehlen, um die obigen 2 Fragen zu behandeln?

Vielen Dank!

mockup: control buttons to move objects

Antwort

0

Hier ist ein Beispiel dafür, wie die Ereignisse und Staat zu organisieren: https://jsfiddle.net/zL4vmq0L/

Wie Sie sehen können, gibt es eine App Komponente, die alle den Zustand hält und leitet die Zustandsänderungsfunktion, move, in die Controls Komponente über props.

Es gibt mehrere Bibliotheken zum Verwalten des Status der Anwendung, z. B. redux und mobx.

+0

Vielen Dank Filipe, das ist ausgezeichnet. Kann ich fragen, ob ich mehrere Komponenten brauche, um den jeweils anderen Zustand zu aktualisieren, das Muster besteht immer darin, den "Zustand" bei der Elternkomponente zu speichern und sie über "Requisiten" an die Kinder weiterzuleiten? – quynhu

+0

In Bezug auf die Frage 2, ist es üblich mit react js, dass der Event-Handler identifizieren, welche Taste geklickt wird, zum Beispiel mit 'event.target',' refs' oder 'key'? Oder gibt es eine andere Möglichkeit, ID-Parameter zu Event-Handler-Funktionen? – quynhu

+0

Wenn Sie sich Redux anschauen, wird der Status direkt im Programm gespeichert. also ja, dass der aktuelle Status quo wie man die Daten organisiert. Über Ihre zweite Frage können Sie Ereignisse wie diese identifizieren, aber aus meiner Erfahrung ist es einfacher, Funktionen zu testen und wiederzuverwenden, wenn sie nicht vom Ereignisobjekt abhängen und stattdessen normale Argumente erhalten. –

Verwandte Themen