¿Existe un equivalente a este CSS en React Native, de modo que la aplicación use la misma fuente en todas partes?
body {
font-family: 'Open Sans';
}
Aplicarlo manualmente en cada nodo de texto parece demasiado complicado.
react-native
Dagobert Renouf
fuente
fuente
Respuestas:
La forma recomendada es crear su propio componente, como MyAppText. MyAppText sería un componente simple que representa un componente de texto usando su estilo universal y puede pasar por otros accesorios, etc.
https://facebook.github.io/react-native/docs/text.html#limited-style-inheritance
fuente
render()
lugar del constructor. Usar ganchos conuseMemo
también podría ayudar si la eficiencia es importante. Alternativamente, si desea mantenerlo en el constructor, es importante agregar unacomponentDidUpdate
lógica que se actualicethis.style
cuando el componente se actualice debido a un cambio de estilo.Recientemente se creó un módulo de nodo que resuelve este problema para que no tenga que crear otro componente .
https://github.com/Ajackster/react-native-global-props
https://www.npmjs.com/package/react-native-global-props
La documentación indica que en su componente de mayor orden, importe la
setCustomText
función como tal.Luego, cree el estilo / accesorios personalizados que desee para el
Text
componente react-native . En su caso, le gustaría que fontFamily funcione en todos losText
componentes.Llame a la
setCustomText
función y pase sus accesorios / estilos a la función.Y luego todos los
Text
componentes de react-native tendrán su fontFamily declarada junto con cualquier otro accesorio / estilo que proporcione.fuente
<Text style={styles.text}>
? No es una solución perfecta como esa, ¿body {font-family: 'Open Sans';}
tiene alguna solución de actualización?Text style={styles.text}>
. Solo necesita declarar sus accesorios personalizados en algún lugar de su aplicación y se aplicará a todos sus componentes de texto. Es muy similar abody {font-family: ....}
Para React Native 0.56.0+, compruebe si defaultProps se define primero:
Luego añade:
Agregue lo anterior en el constructor del archivo App.js (o cualquier componente raíz que tenga).
Para anular el estilo, puede crear un objeto de estilo y difundirlo y luego agregar su estilo adicional (por ejemplo
{ ...baseStyle, fontSize: 16 }
)fuente
defaultProps
no existía cuando se escribieron todas las demás respuestas, pero esta parece ser la forma de hacerlo ahora.style
utilería, digamos, para modificar estilos deText
componentes particularesstyle
accesorio en el componente Texto, se reemplazará la fuente predeterminada.Puede anular el comportamiento de Text agregando esto en cualquiera de sus componentes usando Text:
Editar: desde React Native 0.56,
Text.prototype
ya no funciona. Necesitas eliminar.prototype
:fuente
Añadir
en
package.json
luego correreact-native link
fuente
Con React-Native 0.56, el método de cambio anterior
Text.prototype.render
ya no funciona, por lo que debe usar su propio componente, ¡que se puede hacer en una línea!MyText.js
AnotherComponent.js
fuente
useRef
. reactjs.org/docs/hooks-reference.html#userefAgregue esta función a su
App
componente raíz y luego ejecútela desde su constructor después de agregar su fuente siguiendo estas instrucciones. https://medium.com/react-native-training/react-native-custom-fonts-ccc9aacf9e5efuente
const App = StackNavigator({...})
yexport default App
dónde exactamente iba a colocar este código ya que no creo que pueda utilizar un constructor aquí?Súper tarde para este hilo pero aquí va.
TLDR; Agregue el siguiente bloque en su
AppDelegate.m
Tutorial de todo el flujo.
Algunas formas en las que puede hacer esto además de usar un complemento como,
react-native-global-props
así que lo guiaré paso a paso.Añadiendo fuentes a las plataformas.
Cómo agregar la fuente al proyecto IOS
Primero, creemos una ubicación para nuestros activos. Hagamos el siguiente directorio en nuestra raíz.
''
''
Ahora agreguemos un NPM "React Native" en nuestro package.json
Ahora podemos ejecutar "react-native link" para agregar nuestros activos a nuestras aplicaciones nativas.
Verificando o haciendo manualmente.
Eso debería agregar sus nombres de fuente en los proyectos
.plist
(para que los usuarios del código VS corrancode ios/*/Info.plist
para confirmar)Aquí supongamos que
Verlag
es la fuente que agregó, debería verse así:Ahora que los asignó, ahora asegurémonos de que estén realmente allí y se estén cargando (así es también como lo haría manualmente).
Vaya a
"Build Phase" > "Copy Bundler Resource"
, si no funcionó, agregará manualmente debajo de ellos aquí.Obtener nombres de fuentes (reconocidos por XCode)
Primero abra sus registros de XCode, como:
Luego puede agregar el siguiente bloque en su
AppDelegate.m
para registrar los nombres de las fuentes y la familia de fuentes.Una vez que ejecutes deberías encontrar tus fuentes si se cargan correctamente, aquí encontramos las nuestras en registros como este:
Así que ahora sabemos que cargó la
Verlag
familia y son las fuentes dentro de esa familia.Verlag-Book
Verlag-BlackItalic
Verlag-BoldItalic
Verlag-XLight
Verlag-Bold
Verlag-Black
Verlag-XLightItalic
Verlag-LightItalic
Verlag-BookItalic
Verlag-Light
Estos son ahora los nombres sensibles a mayúsculas y minúsculas que podemos usar en nuestra familia de fuentes que podemos usar en nuestra aplicación nativa de reacción.
Got -'em ahora establece la fuente predeterminada.
Luego, para establecer una fuente predeterminada para agregar su nombre de familia de fuentes en su
AppDelegate.m
con esta líneaHecho.
fuente
Establecer en package.json
Y vincular el vínculo nativo de reacción
fuente
Eso funciona para mí: Agregar fuente personalizada en React Native
descargue sus fuentes y colóquelas en la carpeta assets / fonts, agregue esta línea en package.json
luego abra la terminal y ejecute este comando: react-native link
Ahora estás listo para comenzar. Para un paso más detallado. visite el enlace mencionado anteriormente
fuente