मैंने here से दो साल की पुरानी प्रतिलिपि बनाई है। यह अब फिग्हेल के साथ काम कर रहा है और अभिकर्मक/प्रतिक्रिया का एक नवीनतम संस्करण का उपयोग करता है। मैं इस चेतावनी संदेश को अलग करने का एक सामान्य तरीका ढूंढ रहा हूं जो जावास्क्रिप्ट कंसोल पर आता है: Warning: Every element in a seq should have a unique :key
। विचार सभी घटकों में एक उत्पन्न अद्वितीय मूल्य के साथ :key
डालना है। फिर संदेशों को गायब होना चाहिए और मैं यह देखने की स्थिति में रहूंगा कि किन घटकों को अद्वितीय :key
की आवश्यकता है। मेरी समस्या यह है कि भले ही एक अद्वितीय :key
उन सभी में डाल दिया जा रहा है, चेतावनी संदेश अभी भी देखा गया है।अभिकर्मक प्रतिक्रिया क्लोजरस्क्रिप्ट चेतावनी: एक सीक में प्रत्येक तत्व में एक अद्वितीय होना चाहिए: कुंजी
तो - क्या कोई मुझे बताएगा कि कौन सा घटक मैंने याद किया है या अन्यथा मैंने गलत क्या किया है? जैसा कि आप source (permalink) से देख सकते हैं मैंने दो घटकों में :key (gen-key)
जोड़ा है: [:polyline {:key (gen-key) ...
और [:svg {:key (gen-key) ...
क्रमशः 43 और 68 पंक्तियों पर।
संपादित तो यह answer (permalink) कोड के मामले में वैसे भी है। लाइन 44 और 60 पर ^{:key (gen-key)}
की नियुक्ति की तलाश करें।
ध्यान दें कि फ़ंक्शन gen-key
डिबगिंग के लिए बनाया गया था। बदलने के लिए प्राकृतिक कुंजी।
(defn gen-key []
(gensym "key-"))
यहाँ और जिस तरह से ऊपर दिए गए लिंक में किया है::, बजाय मेटाडाटा के रूप में चाबी की तरह:
इस तरह आप gen-key
लागू हो सकता है
(def uniqkey (atom 0))
(defn gen-key []
(let [res (swap! uniqkey inc)]
(u/log res)
res))
कोड 'for' और' in' के बजाय 'map' का उपयोग कर रहा है, लेकिन उसी प्रभाव के लिए। मैंने इसके साथ खेला है: या तो मेटाडेटा या घटक के लिए पहली तर्क के रूप में कुंजी। लेकिन दस्तावेज़ीकरण के अनुसार * जो भी * कोई बाधा नहीं बनाता है। - जिनका कोई polyline': वहाँ कई xy अंक में '[डाल रहे हैं कुंजी - शायद कि मुद्दा है - मैं अभी भी इस पर काम करने के लिए ... –
यह निश्चित रूप से की जरूरत है मेटाडाटा नहीं के पहले तत्व के रूप में होने की कोशिश कर रहा हूँ घटक और इसलिए फॉर्म '^ {: कुंजी वैल} [compnent]' होना चाहिए। ध्यान दें कि अभिकर्मक आलसी-सेक अच्छी तरह से सौदा नहीं करता है, यही कारण है कि आप अक्सर '([[...]' या '(डोल ...) 'जैसी चीजें देखते हैं ताकि सीक को महसूस किया जा सके। सुनिश्चित करें कि त्रुटि संदेशों के रूप में नवीनतम अभिकर्मक का उपयोग करना थोड़ा बेहतर हो गया है। पिछली बार मेरे पास त्रुटि के संदर्भ में एक प्रतिक्रियात्मक संदर्भ को याद रखने के लिए याद रखें, तो शायद आप ब्राउज़र तत्वों का उपयोग पृष्ठ तत्वों को देखने के लिए कर सकते हैं ताकि यह पता चल सके कि कौन सा घटक ज़िम्मेदार है –
दिन 8/पुनः- फ्रैम विकी जो मदद कर सकता है। विशेष रूप से, https://github.com/Day8/re-frame/wiki/Using-%5B%5D-instead-of-%28%29 समझ के साथ मदद कर सकता है जहां अभिकर्मक पैदा करेगा घटकों प्रतिक्रिया है, जो हमेशा नहीं है स्पष्ट और ट्रैक जहां मेटाडाटा –