hereから2歳の要点をコピーしました。 Figwheelと連携し、Reagent/Reactの最新バージョンを使用しています。 私はJavascriptコンソールに来るこの警告メッセージを隔離する一般的な方法を探しています:Warning: Every element in a seq should have a unique :key
。考え方は、生成された一意の値を持つ:key
をすべてのコンポーネントに入れることです。その後、メッセージは消えてはならず、どのコンポーネントにユニークなものが必要であるかを知ることができます。:key
私の問題は、ユニークな:key
がすべてに入れられているにもかかわらず、警告メッセージがまだ表示されていることです。Reagent React Clojurescript警告:seqのすべての要素にユニークキーが必要です
だから誰かが私が逃したコンポーネント、あるいは私が間違ったことを教えてくれますか? source (permalink)からわかるように、:key (gen-key)
を2つのコンポーネント:[:polyline {:key (gen-key) ...
と[:svg {:key (gen-key) ...
にそれぞれ43行と68行で追加しました。
これはコードの意味ではanswer (permalink)です。 の44行目と60行目の配置を探してください。
機能gen-key
はデバッグ用に作成されています。置き換えるべき自然キー。
これは、あなたがgen-key
を実装する方法を次のとおりです。
(defn gen-key []
(gensym "key-"))
そしてここでは、上記のリンクで行わ方法です:
(def uniqkey (atom 0))
(defn gen-key []
(let [res (swap! uniqkey inc)]
(u/log res)
res))
コードは 'for'と' into'ではなく 'map'を使用していますが、同じ効果があります。私は一緒に遊んだ:メタデータまたはコンポーネントの最初の引数としてキー。しかし、ドキュメント*どんなことでも、オッズはありません。 '':polyline'には多くのxyポイントが入っています:キーはありません - それはおそらく問題です - 私はまだそれを解決しようとしています... –
これは間違いなくメタデータとしての最初の要素ではありませんそのコンポーネントは '^ {:key val} [compnent]'の形式でなければなりません。また、試薬はレイジーセクをうまく扱わないことに注意してください。なぜなら、seqが確実に実現するために '(into [] ...)'や '(doall ...) 'のようなものがよく見られるからです。最新の試薬をエラーメッセージとして使用していることを確認してください。前回エラーが発生したときに参照された反応コードを覚えているようです。ブラウザインスペクタを使用してページ要素を調べ、どのコンポーネントが責任を持っているかを知ることができます –
day8/fram wikiが役に立ちます。特に、https://github.com/Day8/re-frame/wiki/Using-%5B%5D-instead-of-%28%29は、試薬が反応成分を生成する場所を理解するのに役立つかもしれませんが、必ずしもそうではありませんメタデータが必要な場所を追跡するのに役立ちます。 –