2015-10-19 19 views
5

मैं शीर्षक रेंडर करने के लिए जब वर्णनचेक अगर तत्व प्रतिक्रिया खाली है

var description = <MyElement />; // render will return nothing in render in some cases 

if (!description) { // this will not work because its an object (reactelement) 
    return null; 
} 

<div> 
    {title} 
    {description} 
</div> 

क्या करता है, तो अपने खाली सही तरीके के बजाय! वर्णन की जांच करने के लिए रिक्त है नहीं करना चाहते?

+0

क्या आपके पास कोई राज्य/प्रोप है जो आप यह देखने के लिए जांच सकते हैं कि वर्णन _should_ खाली है या नहीं? किसी तत्व के बच्चों की जांच करने के बजाय इनका उपयोग करके चेक करना बेहतर होता है। – J3Y

+0

वास्तव में डेटा कुछ प्रोप द्वारा निर्मित नहीं किया जाता है जो कि माइलेमेंट घटक में परिवर्तित/फ़िल्टर किए जाते हैं। यदि कोई रास्ता नहीं है तो मुझे इस तर्क को मूल घटक में स्थानांतरित करने की आवश्यकता है। तो मैं इस प्रोप में जांच सकता था। –

उत्तर

1
var description, title; 

if (this.props.description) { 
    description = <Description description={this.props.description} />; 

    if (this.props.title) { 
     title = <Title title={this.props.title} />; 
    } 
} 

<div> 
    {title} 
    {description} 
</div> 

या बस:

render() { 
    const { description, title } = this.props; 

    return (
    <div> 
     {title && description && <Title title={title} />} 
     {description && <Description description={description} />;} 
    </div> 
); 
} 

इमो बेहतर अभ्यास है कि अपने विवरण तत्व तो जरूरत नहीं है अगर यह प्रदान की गई नहीं है, बल्कि अशक्त लौटने में यह प्रस्तुत करना है की तुलना में है। चूंकि आप प्रोप के माध्यम से डेटा भेज रहे होंगे। और इसी तरह यदि आप इस घटक को बिल्कुल प्रस्तुत नहीं करना चाहते हैं, तो यह माता-पिता में होना चाहिए।

+1

तो एकमात्र समाधान तत्व में डेटा रूपांतरण/फ़िल्टर के तर्क को पैरेंट में ले जाना है और फिर इस वर्र्स पर जांचना है? –

+1

यूप; जैसा कि मैं समझता हूं कि यह प्रतिक्रिया की शीर्ष-डाउन रेंडरिंग योजना का जानबूझकर हिस्सा है। – machineghost

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