Je suis nouveau sur React et React Native. Pour le moment, pour chaque composant, je décompose le code en 2 fichiers distincts:
index.js
pour tout le code React, et;styles.js
pour la feuille de styleExiste-t-il un moyen de passer des accessoires dans la feuille de style externe?
Exemple: index.js
:
render() {
const iconColor = this.props.color || '#000';
const iconSize = this.props.size || 25;
return (
<Icon style={styles.icon} />
);
}
Exemple styles.js
:
const styles = StyleSheet.create({
icon : {
color: iconColor,
fontSize: iconSize
}
});
Le code ci-dessus ne fonctionne pas, mais il est plus là juste pour faire comprendre ce que j'essaie de faire. Toute aide est très appréciée!
Créez une classe qui prend iconColor et iconSize comme arguments et renvoie un objet StyleSheet
// 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')
}
Je préfère avoir mes styles dans un fichier styles.js séparé. À l'intérieur de styles.js:
export const styles = (props) => StyleSheet.create({
icon : {
color: props.iconColor,
fontSize: props.iconSize
}
}
Dans votre classe principale, vous pouvez transmettre la valeur
return (
<Icon style={styles(this.props).icon} />
);
Alternativement, vous pouvez directement ces valeurs de sorte qu'il serait
export const styles = (iconColor,iconSize) => StyleSheet.create({
icon : {
color: iconColor,
fontSize: iconSize
}
}
et à l'intérieur de votre classe principale
return (
<Icon style={styles(this.props,iconColor,
this.props.iconSize).icon} />
);