2016-03-03 13 views
9

में सशर्त स्टाइल को संभालने का सही तरीका मैं अभी कुछ प्रतिक्रिया कर रहा हूं और मैं सोच रहा था कि सशर्त स्टाइल करने के लिए "सही" तरीका है या नहीं। ट्यूटोरियल में वेप्रतिक्रिया

style={{ 
    textDecoration: completed ? 'line-through' : 'none' 
}} 

का उपयोग मैं इनलाइन स्टाइल उपयोग नहीं करना चाहते तो मैं बजाय सशर्त स्टाइल को नियंत्रित करने के एक वर्ग का उपयोग करना चाहते। सोचने के सही तरीके से यह कैसे दृष्टिकोण करेगा? या क्या मुझे सिर्फ इनलाइन स्टाइलिंग तरीके का उपयोग करना चाहिए?

+1

मुझे लगता है कि आपके पास 'रेडक्स' और 'प्रतिक्रिया' उलझन में हो सकता है। रेडक्स के स्टाइल के साथ कुछ लेना देना नहीं है। – rossipedia

+0

मुझे लगता है कि आपकी वरीयता दस्तावेजों के लिए स्पॉट-ऑन है, लेकिन उन अनुप्रयोगों के लिए अति उत्साही है जहां मार्कअप इंटरचेंज कंपैट महत्वपूर्ण नहीं है। कुछ प्रमुख वेब ऐप्स वास्तव में कक्षाओं से छुटकारा पा रहे हैं और केवल इनलाइन शैली का उपयोग कर रहे हैं, जो अधिक अनुमानित और आसान है कि 5 लागू नियमों में टेक्स्ट बोल्ड बना रहा है। जब अटारी गतिशील होते हैं, तो आप दोबारा बैंडविड्थ नहीं बचाते जैसे आप दोहराए गए दस्तावेज़ों के साथ करते हैं। ऐप के अर्थशास्त्र (व्यू-स्रोत मार्कअप) या तो महत्वपूर्ण नहीं हैं ... – dandavis

+0

@rossipedia आह हाँ धन्यवाद, मिश्रित हो गया, इस बारे में सोचते समय रेडक्स ट्यूटोरियल को देख रहा था, धन्यवाद! – davidhtien

उत्तर

8

आप एक वर्ग के नाम का उपयोग करना पसंद करते हैं, तो हर तरह से कक्षा का नाम उपयोग करें।

className={completed ? 'text-strike' : null} 

आप classnames पैकेज सहायक भी पा सकते हैं। इसके साथ, अपने कोड इस तरह दिखेगा:

className={classNames({ 'text-strike': completed })} 

कोई "सही" जिस तरह से सशर्त शैली देने की नहीं है। जो कुछ भी आपके लिए सबसे अच्छा काम करता है। अपने लिए, मैं इनलाइन स्टाइल से बचने और बस वर्णित तरीके से कक्षाओं का उपयोग करना पसंद करता हूं।

3

सबसे पहले, मैं शैली के मामले के रूप में आपसे सहमत हूं - मैं इनलाइन शैलियों की बजाय सशर्त रूप से कक्षाओं को भी लागू करता हूं। लेकिन आप उसी तकनीक का उपयोग कर सकते हैं:

<div className={{completed ? "completed" : ""}}></div> 

राज्य के और अधिक जटिल सेट के लिए, वर्गों की एक सरणी जमा होते हैं और उन्हें लागू:

var classes = []; 

if (completed) classes.push("completed"); 
if (foo) classes.push("foo"); 
if (someComplicatedCondition) classes.push("bar"); 

return <div className={{classes.join(" ")}}></div>; 
7
<div style={{ visibility: this.state.driverDetails.firstName != undefined? 'visible': 'hidden'}}></div> 

उपरोक्त कोड चेकआउट करें। वह चाल करेगा।

+0

बिल्कुल इस तरह की तलाश में था। सशर्त इनलाइन स्टाइल, धन्यवाद। –