Ich habe einen zwei Jahre alten Kern von here kopiert. Es arbeitet jetzt mit Figwheel und verwendet eine neuere Version von Reagent/React. Ich bin auf der Suche nach einem generischen Weg zum Isolieren dieser Warnmeldung, die auf die Javascript-Konsole kommt: Warning: Every element in a seq should have a unique :key
. Die Idee ist, einen :key
mit einem generierten eindeutigen Wert in alle Komponenten zu setzen. Dann sollten die Nachrichten verschwinden und ich werde in der Lage sein zu sehen, welche Komponenten die einzigartige :key
benötigt. Mein Problem ist, dass obwohl eine eindeutige :key
in alle von ihnen eingefügt wird, die Warnmeldung immer noch gesehen wird.Reagenz Reagieren Clojurescript Warnung: Jedes Element in einem Seq sollte eine eindeutige haben: Schlüssel
Also - könnte mir jemand sagen, welche Komponente ich verpasst habe oder was ich sonst falsch gemacht habe? Wie Sie aus der source (permalink) entnehmen können, habe ich :key (gen-key)
zu den beiden Komponenten hinzugefügt: [:polyline {:key (gen-key) ...
und [:svg {:key (gen-key) ...
in den Zeilen 43 und 68 jeweils.
Bearbeiten Also das ist die answer (permalink), in Bezug auf den Code sowieso. Suchen Sie einfach nach der Platzierung von ^{:key (gen-key)}
in den Zeilen 44 und 60.
Beachten Sie, dass die Funktion gen-key
zum Debuggen gemacht wurde. Natürliche Schlüssel ersetzen.
Dies ist, wie Sie gen-key
implementieren könnte:
(defn gen-key []
(gensym "key-"))
hier ist und die in den Links getan Weg oben:
(def uniqkey (atom 0))
(defn gen-key []
(let [res (swap! uniqkey inc)]
(u/log res)
res))
Der Code verwendet 'map' anstatt' for' und 'in', aber mit dem gleichen Effekt. Ich habe mit gespielt: Schlüssel entweder als Metadaten oder als erstes Argument für die Komponente. Aber gemäß der Dokumentation * was auch immer * macht keine Chancen. Es gibt viele xy-Punkte in der '[: Polylinie' - die haben keine: Schlüssel - vielleicht ist das das Problem - ich versuche immer noch, es auszuarbeiten ... –
Es muss definitiv als Metadaten nicht das erste Element sein Die Komponente muss also die Form "^ {: key val} [compnent]" haben. Beachten Sie auch, dass das Reagens nicht mit Lazy-Seq-Well arbeitet, weshalb Sie oft Dinge wie '(in [] ...)' oder '(doall ...)' sehen, die verwendet werden, um sicherzustellen, dass der Seq realisiert wird. Stellen Sie sicher, dass das neueste Reagenz als Fehlermeldung etwas besser ist. Scheint sich daran zu erinnern, beim letzten Mal eine reactid zu sehen, die mit dem Fehler referenziert wurde. Vielleicht können Sie den Browser-Inspektor verwenden, um Seitenelemente zu betrachten, um eine Vorstellung davon zu bekommen, welche Komponente verantwortlich ist –
Fram Wiki, das helfen könnte. Insbesondere könnte https://github.com/Day8/re-frame/wiki/Using-%5B%5D-instead-of-%28%29 hilfreich sein, um zu verstehen, wo das Reagens reaktive Komponenten erzeugt, was nicht immer der Fall ist offensichtlich und kann helfen, aufzufinden, wo Sie die Metadaten benötigen –