मैं एक स्थिति है जहाँ मैं कुछ डोम नोड आकार गणना (ऊपर, नीचे और आकार गुण गाया डोम नोड के)क्या मुझे किसी तत्व के प्रतिक्रिया रूट डोम नोड प्राप्त करने के लिए रेफरी या findDOMNode का उपयोग करना चाहिए?
क्या मैं अभी कर रहा हूँ बनाना चाहते पर हूँ पर componentDidUpdate
विधि करने के लिए है इस पर findDOMNode फोन:
componentDidUpdate() {
var node = ReactDOM.findDOMNode(this);
this.elementBox = node.getBoundingClientRect();
this.elementHeight = node.clientHeight;
// Make calculations and stuff
}
यह ठीक काम कर रहा है, लेकिन मैं प्रदर्शन के बारे में थोड़ा चिंतित हूँ, और सर्वोत्तम प्रथाओं प्रतिक्रिया होती है। कई स्थानों को खोजने के बजाय ref
संपत्ति का उपयोग करने के बारे में बात करते हैं, लेकिन वे सभी बच्चे के डोम तत्वों के लिए हैं, मेरे मामले में मैं केवल अपने घटक के रूट डीओएम नोड चाहता हूं।
रेफरी का उपयोग कर कुछ ऐसा दिखाई देगा विकल्प:
render(){
return (
<section // container
ref={(n) => this.node = n}>
// Stuff
</section>
}
componentDidUpdate() {
this.elementBox = this.node.getBoundingClientRect();
this.elementHeight = this.node.clientHeight;
// Make calculations and stuff
}
ईमानदारी से कहूं तो मेरी जड़ डोम नोड के लिए एक रेफरी कॉलबैक संलग्न बस इसे संदर्भ मेरे लिए सही महसूस नहीं करता है पाने के लिए।
इस मामले पर सबसे अच्छा अभ्यास क्या माना जाता है? किसके पास बेहतर प्रदर्शन है?
फिर से प्रलेखन को पढ़ना मैंने अभी पाया:> कक्षा पर एक संपत्ति सेट करने के लिए रेफ कॉलबैक का उपयोग करना डीओएम तत्वों तक पहुंचने के लिए एक आम पैटर्न है। पसंदीदा तरीका है कि उपर्युक्त उदाहरण में संपत्ति को रेफ कॉलबैक में सेट करना है। – Danielo515
वैसे, मुझे नहीं पता कि आपने देखा है, लेकिन जेएस मानक मैं शिकायत पर हूं {{n) => this.node = n} 'कह रहा है "तीर फ़ंक्शन असाइनमेंट वापस नहीं करना चाहिए।" मुझे आश्चर्य है कि यह कानूनी शिकायत है या नहीं – revelt