2017-03-09 5 views
2

Ich bin neu zu reagieren und reagieren native. Im Moment für jede Komponente bin gegen ich den Code in zwei separaten Dateien:Requisiten in externes Stylesheet in React Native?

  1. index.js für den gesamten Code Reaktion, und;
  2. styles.js für die Stylesheet-

Gibt es eine Möglichkeit Requisiten in das externe Stylesheet übergeben?

Beispiel: index.js:

render() { 
 
    const iconColor = this.props.color || '#000'; 
 
    const iconSize = this.props.size || 25; 
 

 
    return (
 
    <Icon style={styles.icon} /> 
 
); 
 
}

Beispiel styles.js:

const styles = StyleSheet.create({ 
 
    icon : { 
 
    color: iconColor, 
 
    fontSize: iconSize 
 
    } 
 
});

Der obige Code funktioniert nicht, aber es ist mehr, um den Punkt zu verdeutlichen, was ich versuche zu tun. Jede Hilfe wird sehr geschätzt!

Antwort

2

Erstellen Sie eine Klasse, die iconColor und iconSize als Argumente und gibt ein Stylesheet-Objekt

// styles.js 

export default class StyleSheetFactory { 
    static getSheet(iconSize, iconColor) { 
     return StyleSheet.create({ 
      icon : { 
       color: iconColor, 
       fontSize: iconSize 
      } 
     }) 
    } 
} 

// index.js 

render() { 
    let myStyleSheet = StyleSheetFactory.getSheet(64, 'red') 
} 
+0

Das in der Tat funktioniert nimmt, so danke. Ich habe die statischen Parameter, die du passierst, durch die Requisiten ersetzt, um sie dynamischer zu machen. Ich bin mir jedoch nicht sicher, ob das die eleganteste Lösung ist. Was ist wenn ich mehr als 2 habe? Ich bin auch nicht 100% sicher, die Stile zu teilen und der reactive Code ist der beste, ich versuche nur so viel wie möglich zu lernen. Danke noch einmal! – chapeljuice

+1

@chapeljuice Ich persönlich bevorzuge es nicht, Stile zu trennen, weil ich finde, dass es den Code lesbarer macht und es vorzieht, zusätzliche Komponenten mit Inline-Styles zu erstellen, statt mit einem großen Stylesheet, wo ich einen Stil suchen muss - am Ende kommt es aber auf Präferenz an Es gibt Vorteile, separate Blätter zu haben, siehe https://stackoverflow.com/questions/39336266/react-native-inline-styles-and-performance/39337449#39337449 - – FuzzyTree