Disons que j'ai un composant avec un rendu comme celui-ci:
<View style={jewelStyle}></View>
Où jewelStyle =
{
borderRadius: 10,
backgroundColor: '#FFEFCC',
width: 20,
height: 20,
},
Comment puis-je rendre la couleur d'arrière-plan dynamique et assignée au hasard? J'ai essayé
{
borderRadius: 10,
backgroundColor: getRandomColor(),
width: 20,
height: 20,
},
Mais cela fait que toutes les instances de View ont la même couleur, je veux que chacune soit unique.
Des conseils?
css
reactjs
react-native
Pete Thorne
la source
la source
Stylesheet.create()
toute façon?Oui, vous pouvez et en fait, vous devriez utiliser
StyleSheet.create
pour créer vos styles.Puis:
la source
StyleSheet.flatten
jette simplement toute optimisationStyleSheet.create
comme indiqué dans la documentation: "REMARQUE: soyez prudent, car abuser de cela peut vous taxer en termes d'optimisations. Les ID permettent des optimisations via le pont et la mémoire en général. Se référer directement aux objets de style vous privera de ces optimisations. " ( facebook.github.io/react-native/docs/stylesheet.html ).Si vous souhaitez toujours profiter
StyleSheet.create
et avoir des styles dynamiques, essayez ceci:Remarquez comment la
style
propriété deView
est définie comme un tableau qui combine votre feuille de style avec vos styles dynamiques.la source
Le plus simple est le mien:
la source
Eu un problème de syntaxe. Cela a fonctionné pour moi
la source
Vous voudrez quelque chose comme ça:
Dans cet exemple, je prends le tableau de lignes, contenant les données pour les lignes du composant, et je le mappe dans un tableau de composants de texte. J'utilise des styles en ligne pour appeler la
getRandomColor
fonction chaque fois que je crée un nouveau composant Texte.Le problème avec votre code est que vous définissez le style une fois et donc getRandomColor n'est appelé qu'une seule fois - lorsque vous définissez le style.
la source
Je sais que c'est extrêmement tard, mais pour quiconque se demande encore, voici une solution facile.
Vous pouvez simplement créer un tableau pour les styles:
Le second remplacera toute couleur d'arrière-plan d'origine comme indiqué dans la feuille de style. Ensuite, ayez une fonction qui change la couleur:
Cela générera une couleur hexadécimale aléatoire. Ensuite, appelez simplement cette fonction à chaque fois et bam, nouvelle couleur de fond.
la source
Je sais qu'il y a plusieurs réponses, mais je pense que la meilleure et la plus simple est d'utiliser un état "Changer" est le but de l'état.
}
la source
Vous pouvez lier la valeur d'état directement à l'objet de style. Voici un exemple:
la source
Oui, vous pouvez créer des styles dynamiques. Vous pouvez transmettre des valeurs à partir des composants.
Créez d'abord StyleSheetFactory.js
puis utilisez-le dans votre composant de la manière suivante
la source
L'utilisation de l'opérateur de propagation d'objets "..." a fonctionné pour moi:
la source
Si vous utilisez un écran avec des filtres par exemple, et que vous souhaitez définir l'arrière-plan du filtre selon s'il a été sélectionné ou non, vous pouvez faire:
Sur quel filtre défini est:
PS: la fonction
this.props.setVenueFilter(filters)
est une action redux, etthis.props.venueFilters
est un état redux.la source
Au cas où quelqu'un aurait besoin d'appliquer des conditions
la source
Voici ce qui a fonctionné pour moi:
Pour une raison quelconque, c'était la seule façon dont le mien se mettrait à jour correctement.
la source