Existe um equivalente a este CSS no React Native, de modo que o aplicativo use a mesma fonte em todos os lugares?
body {
font-family: 'Open Sans';
}
Aplicá-lo manualmente em cada nó de Texto parece excessivamente complicado.
react-native
Dagobert Renouf
fonte
fonte
Respostas:
A maneira recomendada é criar seu próprio componente, como MyAppText. MyAppText seria um componente simples que renderiza um componente de texto usando seu estilo universal e pode passar por outros adereços, etc.
https://facebook.github.io/react-native/docs/text.html#limited-style-inheritance
fonte
render()
vez do construtor. Usar ganchos comuseMemo
também pode ajudar se a eficiência for importante. Alternativamente, se você quiser mantê-lo no construtor, é importante adicionar umacomponentDidUpdate
lógica que atualizathis.style
quando o componente é atualizado devido a uma mudança de prop de estilo.Recentemente, foi feito um módulo de nó que resolve esse problema para que você não precise criar outro componente .
https://github.com/Ajackster/react-native-global-props
https://www.npmjs.com/package/react-native-global-props
A documentação afirma que em seu componente de ordem superior, importe a
setCustomText
função como tal.Em seguida, crie o estilo / adereços personalizados que deseja para o
Text
componente react-native . No seu caso, você gostaria que o fontFamily trabalhasse em todos osText
componentes.Chame a
setCustomText
função e passe seus adereços / estilos para a função.E então todos os
Text
componentes do react -native terão sua fontFamily declarada junto com quaisquer outros adereços / estilos que você fornecer.fonte
<Text style={styles.text}>
?? Não é uma solução perfeita como sebody {font-family: 'Open Sans';}
tivesse alguma solução de atualização ??Text style={styles.text}>
. Você só precisa declarar seus adereços personalizados em algum lugar do seu aplicativo e eles serão aplicados a todos os seus componentes de texto. É muito semelhante abody {font-family: ....}
Para React Native 0.56.0+, verifique se defaultProps é definido primeiro:
Em seguida, adicione:
Adicione o acima no construtor do arquivo App.js (ou qualquer componente raiz que você tenha).
Para substituir o estilo, você pode criar um objeto de estilo e espalhá-lo, em seguida, adicionar seu estilo adicional (por exemplo
{ ...baseStyle, fontSize: 16 }
)fonte
defaultProps
não existisse quando todas as outras respostas foram escritas, mas essa parece ser a maneira de fazer isso agora.style
adereço, digamos, para ajustar estilos deText
componentes específicosstyle
prop no componente Texto, a fonte padrão será substituída.Você pode substituir o comportamento de Texto adicionando-o a qualquer um dos seus componentes usando Texto:
Edit: desde React Native 0,56,
Text.prototype
não está mais funcionando. Você precisa remover.prototype
:fonte
Adicionar
em
package.json
seguida, corrareact-native link
fonte
Com o React-Native 0,56, o método de alteração acima
Text.prototype.render
não funciona mais, então você deve usar seu próprio componente, o que pode ser feito em uma linha!MyText.js
AnotherComponent.js
fonte
useRef
. reactjs.org/docs/hooks-reference.html#userefAdicione esta função ao seu
App
componente raiz e execute-a a partir do seu construtor após adicionar a sua fonte usando estas instruções. https://medium.com/react-native-training/react-native-custom-fonts-ccc9aacf9e5efonte
const App = StackNavigator({...})
eexport default App
onde exatamente eu colocaria esse código, pois não acho que posso usar um construtor aqui?Muito tarde para este tópico, mas aqui vai.
TLDR; Adicione o seguinte bloco em seu
AppDelegate.m
Passo a passo de todo o fluxo.
Algumas maneiras de fazer isso além de usar um plug-in como,
react-native-global-props
por exemplo, vou acompanhá-lo passo a passo.Adicionando fontes às plataformas.
Como adicionar a fonte ao projeto IOS
Primeiro, vamos criar um local para nossos ativos. Vamos fazer o seguinte diretório em nossa raiz.
`` `
`` `
Agora vamos adicionar um NPM "React Native" em nosso package.json
Agora podemos executar "link nativo de reação" para adicionar nossos ativos aos nossos aplicativos nativos.
Verificando ou fazendo manualmente.
Isso deve adicionar os nomes das fontes aos projetos
.plist
(para os usuários do código VS, executecode ios/*/Info.plist
para confirmar)Vamos supor que
Verlag
seja a fonte que você adicionou, ela deve ser semelhante a esta:Agora que você os mapeou, vamos verificar se eles estão realmente lá e sendo carregados (também é assim que você faria manualmente).
Vá para
"Build Phase" > "Copy Bundler Resource"
, Se não funcionar, você adicionará manualmente abaixo deles aqui.Obter nomes de fontes (reconhecido por XCode)
Primeiro, abra seus logs do XCode, como:
Em seguida, você pode adicionar o seguinte bloco em seu
AppDelegate.m
para registrar os nomes das fontes e da família de fontes.Depois de executar, você deve encontrar suas fontes, se carregadas corretamente, aqui encontramos as nossas em logs como este:
Agora sabemos que carregou a
Verlag
família e são as fontes dentro dessa famíliaVerlag-Book
Verlag-BlackItalic
Verlag-BoldItalic
Verlag-XLight
Verlag-Bold
Verlag-Black
Verlag-XLightItalic
Verlag-LightItalic
Verlag-BookItalic
Verlag-Light
Agora, esses são os nomes com distinção entre maiúsculas e minúsculas que podemos usar em nossa família de fontes e em nosso aplicativo nativo react.
Agora eles definem a fonte padrão.
Em seguida, para definir uma fonte padrão para adicionar o nome da família da fonte em seu
AppDelegate.m
com esta linhaFeito.
fonte
Definido em package.json
E link link react-nativo
fonte
Isso funciona para mim: adicione uma fonte personalizada no React Native
baixe suas fontes e coloque-as na pasta assets / fonts, adicione esta linha em package.json
em seguida, abra o terminal e execute este comando: link react-native
Agora você está pronto para ir. Para uma etapa mais detalhada. visite o link acima mencionado
fonte