2016-12-22 12 views
6

मैं निम्नलिखित तरीके से मेरी शैली को अलग कर रहा हूँ:प्रतिक्रिया मूल में दो या दो से अधिक स्टाइलशीट घटकों को मिलाएं/मिलाएं?

styles/
|-- base.js 
|-- base.ios.js 
|-- base.android.js 

उनमें से हर एक स्टाइल शीट घटक इस उदाहरण में के रूप में बनाया निर्यात करता है:

import { StyleSheet } from 'react-native'; 

export default StyleSheet.create({ 
    statusBar: { 
    height: 20 
}); 

मैं उन्हें कैसे मर्ज कर सकते हैं तो मैं केवल एक ही है आधार शैली वस्तु? मैं की तरह कुछ के लिए देख रहा हूँ:

const baseStyles = mergeStyles(baseStyle, platformStyle); 
+0

मुझे यकीन नहीं है कि ऐसा करने के लिए एक अंतर्निहित तरीका है, लेकिन वस्तुओं को एक साथ लिखने के लिए यह छोटा है। हो सकता है कि अपनी स्टाइलशीट फ़ाइलों को सादे ऑब्जेक्ट्स के रूप में रखें, फिर भी उन्हें मर्ज करें, और केवल 'स्टाइलशीट.क्रेट' पर कॉल करें जहां आप वास्तव में शैली – azium

+0

@azium yep डालते हैं, मैंने सोचा था ... हालांकि मुझे आश्चर्य है कि क्या पहले से ही दो को मर्ज करने का विकल्प है यदि आप विशिष्ट शैलियों को मर्ज करना चाहते हैं, तो स्टाइलशीट घटक – R01010010

+0

बनाएं, केवल सरणी का उपयोग करें: '[base.button, platform.button] ' – sodik

उत्तर

5

आप प्रसार ऑपरेटर का उपयोग स्टाइल शीट गठजोड़ कर सकते हैं '...', चेतावनी दी है कि एक ही नाम के किसी भी चर पिछले उदाहरण द्वारा ओवरराइट किया जाएगा।

उसके बारे में यहां छोटे डेमो एप्लिकेशन प्रदर्शित करने के लिए:

'use strict'; 
 
import React, { Component } from 'react'; 
 
import { 
 
    Alert, 
 
    Button, 
 
    StyleSheet, 
 
    Text, 
 
    AppRegistry, 
 
    View, 
 
} from 'react-native'; 
 

 
class listTest extends Component { 
 

 
render() { 
 
    return (
 

 
    <View style={styles3.myViewBox}> 
 
     <Text style = {styles3.myTextBox1}> 
 
     TEST 
 
     </Text> 
 
    </View> 
 
    ); 
 
    } 
 
} 
 

 
const styles = StyleSheet.create({ 
 
    myTextBox1: { 
 
    backgroundColor:'red', 
 
    }, 
 
    myViewBox: { 
 
    backgroundColor:'blue', 
 
    margin:15, 
 
    padding:15, 
 
    } 
 

 
}); 
 

 
const styles2 = StyleSheet.create({ 
 
    myTextBox2: { 
 
    backgroundColor:'yellow', 
 
    }, 
 
    myViewBox: { 
 
    backgroundColor:'green', 
 
    margin:15, 
 
    padding:15, 
 
    }, 
 
}); 
 

 
const styles3 = {...styles,...styles2}; 
 

 
AppRegistry.registerComponent('listTest',() => listTest);

8

आप बहुत करीब हैं:

const baseStyles = [baseStyle, platformStyle]; 

मूल रूप से किसी भी घटक इस तरह शैलियों झरना कर सकते हैं:

<View style={[styles.style1,styles.style2]}></View> 
+0

हाँ लेकिन केवल अगर वे शैली का समर्थन करते हैं, उदाहरण के लिए यदि मैं टेक्स्ट सेट करता हूं एक दृश्य तत्व में, यह कैस्केड नहीं होगा। – R01010010

+1

आपने अपना दिन बचाया। {...} द्वारा विलय एक ही घटक में शैलियों की अनुमति नहीं देता है। सही दृष्टिकोण यह है कि आपने दिखाया। –

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