2016-09-06 9 views
6

क्या यह संभव है कि बच्चे के घटक को प्रोप को स्थानांतरित करना संभव हो, जहां { ..this.props } क्लीनर आसान वाक्यविन्यास के लिए उपयोग किया जाता है, हालांकि className या id जैसे कुछ प्रोप को बाहर कर दिया गया है?स्थानांतरण {..this.props} लेकिन कुछ को बाहर निकालें

उत्तर

3

आप किसी तृतीय-पक्ष लाइब्रेरी का उपयोग कोई आपत्ति नहीं है, तो आप भी lodash के omit फ़ंक्शन का उपयोग कर सकते हैं:

{ ..._.omit(this.props, ['className', 'id']) } 

कुंजी लाभ: madox2 के सुझाव के विपरीत, आप मनमाने ढंग से चर नाम के साथ अपने दायरे को प्रदूषित नहीं है सिर्फ बाल घटकों के कुछ प्रोपों को पार करने से बचने के लिए। और, इस उत्तर को लिखने के समय भी, आप प्रयोगात्मक ES.next सुविधाओं से निपट नहीं रहे हैं।

16

आप इस काम करने के लिए destructuring रोजगार कर सकते हैं:

const { className, id, ...newProps } = this.props; // eslint-disable-line 
// `newProps` variable does not contain `className` and `id` properties 

के बाद से इस वाक्य रचना वर्तमान में ECMAScript प्रस्ताव (रेस्ट/फैले गुण) आप (जैसे कोलाहल का प्रयोग करके) इस सुविधा को सक्षम करने के लिए कोड transpile करने की आवश्यकता होगी है।

+1

यह आश्चर्यजनक है, लेकिन क्या एस्लिंट नहीं होने का कोई आसान तरीका है और पसंद इस पैटर्न का उपयोग करते हुए एक अप्रयुक्त परिवर्तनीय घोषणा के बारे में शिकायत करती है (इस नियम को अक्षम करने के अलावा)? – m90

+0

@madox यह अच्छा है, लेकिन मुझे मैन्युअल रूप से प्रोप को संसाधित करने की आवश्यकता होती है, जहां मैं उन सभी को पास करने का लाभ उठाना चाहता हूं और केवल उन लोगों को छोड़कर जिन्हें मुझे – Ilja

+0

@ m90 की आवश्यकता है, टिप्पणी जो इस विशेष पंक्ति के लिए एस्लिंट को अक्षम करती है – madox2

संबंधित मुद्दे