Je suis nouveau avec React et je comprends les avantages des styles en ligne basés sur des composants. Mais je me demande s'il existe un moyen décent d'avoir une sorte de style global. Par exemple, j'aimerais utiliser la même coloration de texte et de bouton dans mon application.
Plutôt que de répéter dans chaque composant (et de devoir ensuite le changer à x endroits si nécessaire), ma pensée initiale est de créer une classe StyleSheet «de base» dans son propre fichier et de l'importer dans mes composants.
Existe-t-il une meilleure ou plus «réaction»?
react-native
Patm
la source
la source
import { StyleSheet } from 'react-native';
style={defaultStyle}
être ajouté. Au lieu de cela, vous pouvez créer unDefaultView
et l'utiliser au lieu du fourniview
qui est stylé selon vos spécifications. J'ai écrit une réponse détaillant cette méthode il y a quelque temps: stackoverflow.com/a/52429040/5243543Créez un fichier pour vos styles (IE,
Style.js
).Voici un exemple:
Dans l'un des fichiers que vous souhaitez utiliser votre style, ajoutez ce qui suit:
la source
Si vous souhaitez simplement définir des variables globales, vous pouvez essayer.
AppStyles.js
index.ios.js
la source
Vous pouvez également essayer la feuille de style react-native-extended-style qui prend en charge les variables de style globales:
la source
Vous devez créer un fichier pour y stocker tous les styles comme ' styles.js ' et écrire le code de type css selon vos besoins
et maintenant vous pouvez utiliser le style global comme vous pouvez le voir
la source
Essayez ma bibliothèque react-native-style-tachyons , qui vous donne non seulement des styles globaux, mais un système de mise en page réactif et axé sur la conception avec des largeurs et des hauteurs par rapport à la taille de votre police racine.
la source
Toutes ces méthodes répondent directement à la question, mais en ce qui me concerne, ce n'est pas la manière de le faire dans un système de conception basé sur des composants comme React.
Nous pouvons commencer avec des composants atomiques, puis les superposer et les regrouper jusqu'en haut. L'article suivant pourrait rendre cette réflexion plus claire: http://atomicdesign.bradfrost.com/chapter-2/
Si vous avez besoin d'un composant de base qui n'existe pas, créez-le. Ensuite, vous pouvez créer d'autres composants moins spécifiques avec. par exemple:
Ensuite, utilisez
CustomText
partout au lieu deText
. Vous pouvez aussi le faire avecView
,div
,span
ou toute autre chose.la source
<Text />
par<CustomText />
partout. Vous pouvez même importer CustomText en tant que texte afin de ne plus avoir qu'à remplacer l'importation.Fichier CSS externe main.css
créer une instance de fichier css dans le composant.
la source
Ici, vous pouvez trouver un moyen élégant de trier vos styles puis de les importer dans les différents composants, vous pouvez créer un dossier dans lequel vous rassemblez tous les fichiers de styles et créez et index.js qui va fonctionner comme façade:
l'index.js ressemblera à:
puis importez comme ceci:
Ici pour plus d'informations:
https://thoughtbot.com/blog/structure-for-styling-in-react-native
la source
Jetez un œil aux thèmes Shoutem pour React Native.
Voici ce que vous obtenez avec le thème Shoutem:
Style global où un certain style est automatiquement appliqué au composant par son nom de style:
Activation de certains styles spécifiques aux composants avec
styleName
(comme la classe CSS):Héritage de style automatique:
Style imbriqué pour les composants composés:
Pour que cela fonctionne, vous devez utiliser
StyleProvider
le composant wrapper qui fournit du style à tous les autres composants via le contexte. Similaire à ReduxStoreProvider
.Vous devez également connecter votre composant au style avec
connectStyle
afin de toujours utiliser le composant connecté. Similaire à Reduxconnect
.Vous pouvez voir un exemple dans la documentation.
Une dernière chose, nous avons également fourni un ensemble de composants dans notre boîte à outils d'interface utilisateur qui sont déjà connectés au style, vous pouvez donc simplement les importer et les styliser dans votre style / thème global.
la source