Existe-t-il un équivalent à ce CSS dans React Native, afin que l'application utilise la même police partout?
body {
font-family: 'Open Sans';
}
Son application manuelle sur chaque nœud de texte semble trop compliquée.
react-native
Dagobert Renouf
la source
la source
Réponses:
La méthode recommandée consiste à créer votre propre composant, tel que MyAppText. MyAppText serait un composant simple qui restitue un composant de texte en utilisant votre style universel et peut passer par d'autres accessoires, etc.
https://facebook.github.io/react-native/docs/text.html#limited-style-inheritance
la source
render()
lieu du constructeur. L'utilisation de crochets avecuseMemo
peut également aider si l'efficacité est importante. Sinon, si vous souhaitez le conserver dans le constructeur, il est important d'ajouter unecomponentDidUpdate
logique qui se metthis.style
à jour lorsque le composant est mis à jour en raison d'un changement d'accessoire de style.Il y a eu récemment un module de nœud qui a été créé qui résout ce problème afin que vous n'ayez pas à créer un autre composant .
https://github.com/Ajackster/react-native-global-props
https://www.npmjs.com/package/react-native-global-props
La documentation indique que dans votre composant d'ordre le plus élevé, importez la
setCustomText
fonction comme ceci.Ensuite, créez le style / accessoires personnalisés que vous souhaitez pour le
Text
composant natif de réaction . Dans votre cas, vous aimeriez que fontFamily travaille sur chaqueText
composant.Appelez la
setCustomText
fonction et passez vos accessoires / styles dans la fonction.Et puis tous les
Text
composants natifs de réaction auront votre fontFamily déclarée avec tous les autres accessoires / styles que vous fournissez.la source
<Text style={styles.text}>
?? Ce n'est pas une solution parfaite comme celle quibody {font-family: 'Open Sans';}
a une solution de mise à jour ??Text style={styles.text}>
. Il vous suffit de déclarer vos accessoires personnalisés quelque part dans votre application et ils seront appliqués à tous vos composants Text. C'est très similaire àbody {font-family: ....}
Pour React Native 0.56.0+, vérifiez si defaultProps est défini en premier:
Puis ajouter:
Ajoutez ce qui précède dans le constructeur du fichier App.js (ou de tout composant racine que vous avez).
Afin de remplacer le style, vous pouvez créer un objet de style et le diffuser puis ajouter votre style supplémentaire (par exemple
{ ...baseStyle, fontSize: 16 }
)la source
defaultProps
n'existait pas lorsque toutes les autres réponses ont été écrites, mais cela semble être la façon de le faire maintenant.style
accessoires, par exemple, pour modifier les styles deText
composants particuliersstyle
accessoire dans le composant Texte, la police par défaut va être remplacée.Vous pouvez remplacer le comportement du texte en l'ajoutant dans l'un de vos composants à l'aide de Text:
Edit: depuis React Native 0.56,
Text.prototype
ne fonctionne plus. Vous devez supprimer.prototype
:la source
Ajouter
dans
package.json
puis courirreact-native link
la source
Avec React-Native 0.56, la méthode de changement ci-dessus
Text.prototype.render
ne fonctionne plus, vous devez donc utiliser votre propre composant, ce qui peut être fait en une seule ligne!MyText.js
AnotherComponent.js
la source
useRef
. reactjs.org/docs/hooks-reference.html#userefAjoutez cette fonction à votre
App
composant racine , puis exécutez-la à partir de votre constructeur après avoir ajouté votre police en suivant ces instructions. https://medium.com/react-native-training/react-native-custom-fonts-ccc9aacf9e5ela source
const App = StackNavigator({...})
etexport default App
où placer exactement ce code car je ne pense pas que je peux utiliser un constructeur ici?Super tard dans ce fil mais voilà.
TLDR; Ajoutez le bloc suivant dans votre
AppDelegate.m
Procédure pas à pas de tout le flux.
Quelques façons de le faire en dehors de l'utilisation d'un plugin comme
react-native-global-props
je vais vous guider étape par étape.Ajout de polices aux plates-formes.
Comment ajouter la police au projet IOS
Commençons par créer un emplacement pour nos actifs. Créons le répertoire suivant à notre racine.
''
''
Ajoutons maintenant un NPM "React Native" dans notre package.json
Nous pouvons maintenant exécuter un "lien de réaction natif" pour ajouter nos ressources à nos applications natives.
Vérification ou exécution manuelle.
Cela devrait ajouter vos noms de police dans les projets
.plist
(pour les utilisateurs de code VS, exécutezcode ios/*/Info.plist
pour confirmer)Supposons ici que
Verlag
la police que vous avez ajoutée ressemble à ceci:Maintenant que vous les avez mappés, nous allons maintenant nous assurer qu'ils sont réellement là et en cours de chargement (c'est aussi comment vous le feriez manuellement).
Allez dans
"Build Phase" > "Copy Bundler Resource"
, si cela n'a pas fonctionné, vous les ajouterez manuellement ici.Obtenir les noms de polices (reconnus par XCode)
Ouvrez d'abord vos journaux XCode, comme:
Ensuite, vous pouvez ajouter le bloc suivant dans votre
AppDelegate.m
pour enregistrer les noms des polices et de la famille de polices.Une fois que vous avez exécuté, vous devriez trouver vos polices si elles sont chargées correctement, ici nous avons trouvé les nôtres dans des journaux comme celui-ci:
Alors maintenant, nous savons qu'il a chargé la
Verlag
famille et sont les polices à l'intérieur de cette familleVerlag-Book
Verlag-BlackItalic
Verlag-BoldItalic
Verlag-XLight
Verlag-Bold
Verlag-Black
Verlag-XLightItalic
Verlag-LightItalic
Verlag-BookItalic
Verlag-Light
Ce sont maintenant les noms sensibles à la casse que nous pouvons utiliser dans notre famille de polices que nous pouvons utiliser dans notre application native react.
Vous avez maintenant défini la police par défaut.
Ensuite, pour définir une police par défaut pour ajouter le nom de votre famille de polices dans votre
AppDelegate.m
avec cette ligneTerminé.
la source
Défini dans package.json
Et lien lien natif de réaction
la source
Cela fonctionne pour moi: ajouter une police personnalisée dans React Native
téléchargez vos polices et placez-les dans le dossier assets / fonts, ajoutez cette ligne dans package.json
puis ouvrez le terminal et exécutez cette commande: react-native link
Maintenant, vous êtes prêt à partir. Pour une étape plus détaillée. visitez le lien ci-dessus
la source