Есть ли в React Native эквивалент этому CSS, чтобы приложение везде использовало один и тот же шрифт?
body {
font-family: 'Open Sans';
}
Применение его вручную к каждому текстовому узлу кажется чрезмерно сложным.
react-native
Дагоберт Ренуф
источник
источник
Ответы:
Рекомендуемый способ - создать собственный компонент, например MyAppText. MyAppText будет простым компонентом, который отображает компонент Text с использованием вашего универсального стиля и может передавать другие свойства и т. Д.
https://facebook.github.io/react-native/docs/text.html#limited-style-inheritance
источник
render()
вместо конструктора. Использование крючков сuseMemo
также может помочь, если важна эффективность. В качестве альтернативы, если вы хотите сохранить его в конструкторе, важно добавитьcomponentDidUpdate
логику, которая обновляется,this.style
когда компонент обновляется из-за изменения свойства стиля.Недавно был создан модуль узла, который решает эту проблему, поэтому вам не нужно создавать другой компонент .
https://github.com/Ajackster/react-native-global-props
https://www.npmjs.com/package/react-native-global-props
В документации указано, что в вашем компоненте высшего порядка импортируйте
setCustomText
функцию следующим образом.Затем создайте собственный стиль / реквизит, который вы хотите для react-native
Text
компонента . В вашем случае вы хотите, чтобы fontFamily работал над каждымText
компонентом.Вызовите
setCustomText
функцию и передайте ей свой реквизит / стили.И тогда все
Text
компоненты, поддерживающие реакцию, будут иметь ваше объявленное fontFamily вместе с любыми другими предоставленными вами реквизитами / стилями.источник
<Text style={styles.text}>
?? Это не идеальное решение, как у этогоbody {font-family: 'Open Sans';}
есть какое-либо решение для обновления?Text style={styles.text}>
. Вам просто нужно объявить свои собственные реквизиты где-нибудь в вашем приложении, и они будут применены ко всем вашим текстовым компонентам. Это очень похоже наbody {font-family: ....}
Для React Native 0.56.0+ сначала проверьте, определен ли defaultProps:
Затем добавьте:
Добавьте указанное выше в конструктор файла App.js (или любого имеющегося у вас корневого компонента).
Чтобы переопределить стиль, вы можете создать объект стиля и распространить его, а затем добавить свой дополнительный стиль (например
{ ...baseStyle, fontSize: 16 }
)источник
defaultProps
, не существовало, когда были написаны все остальные ответы, но, похоже, это способ сделать это сейчас.style
опцию, скажем, для настройки стилей отдельныхText
компонентовstyle
опору в компоненте Text, шрифт по умолчанию будет заменен.Вы можете переопределить поведение Text, добавив его в любой из ваших компонентов с помощью Text:
Изменить: начиная с React Native 0.56,
Text.prototype
больше не работает. Вам необходимо удалить.prototype
:источник
В React-Native 0.56 описанный выше метод изменения
Text.prototype.render
больше не работает, поэтому вам придется использовать свой собственный компонент, что можно сделать в одну строку!MyText.js
export default props => <Text {...props} style={[{fontFamily: 'Helvetica'}, props.style]}>{props.children}</Text>
AnotherComponent.js
import Text from './MyText'; ... <Text>This will show in default font.</Text> ...
источник
useRef
. reactjs.org/docs/hooks-reference.html#userefДобавьте эту функцию в корневой
App
компонент, а затем запустите ее из конструктора после добавления шрифта, используя эти инструкции. https://medium.com/react-native-training/react-native-custom-fonts-ccc9aacf9e5eimport {Text, TextInput} from 'react-native' SetDefaultFontFamily = () => { let components = [Text, TextInput] const customProps = { style: { fontFamily: "Rubik" } } for(let i = 0; i < components.length; i++) { const TextRender = components[i].prototype.render; const initialDefaultProps = components[i].prototype.constructor.defaultProps; components[i].prototype.constructor.defaultProps = { ...initialDefaultProps, ...customProps, } components[i].prototype.render = function render() { let oldProps = this.props; this.props = { ...this.props, style: [customProps.style, this.props.style] }; try { return TextRender.apply(this, arguments); } finally { this.props = oldProps; } }; } }
источник
const App = StackNavigator({...})
иexport default App
где именно, я не думаю, что могу использовать здесь конструктор?Супер поздно к этой теме, но вот оно.
TL; DR; Добавьте следующий блок в свой
AppDelegate.m
Прохождение всего потока.
Вы можете сделать это несколькими способами, не используя плагин, например
react-native-global-props
Я расскажу вам шаг за шагом.Добавление шрифтов на платформы.
Как добавить шрифт в проект iOS
Сначала давайте создадим место для наших активов. Сделаем следующий каталог в нашем корне.
``
``
Теперь давайте добавим NPM "React Native" в наш package.json.
Теперь мы можем запустить «реакцию на нативную ссылку», чтобы добавить наши ресурсы в наши собственные приложения.
Проверяем или делаем вручную.
Это должно добавить ваши имена шрифтов в проекты
.plist
(для пользователей кода VS запускаетсяcode ios/*/Info.plist
для подтверждения)Предположим,
Verlag
что это шрифт, который вы добавили, он должен выглядеть примерно так:Теперь, когда вы сопоставили их, теперь давайте убедимся, что они действительно там и загружаются (это также то, как вы делаете это вручную).
Перейдите по
"Build Phase" > "Copy Bundler Resource"
ссылке, если это не сработало, вы вручную добавите их сюда.Получить имена шрифтов (распознается XCode)
Сначала откройте журналы XCode, например:
Затем вы можете добавить следующий блок в свой,
AppDelegate.m
чтобы регистрировать имена шрифтов и семейства шрифтов.После запуска вы должны найти свои шрифты, если они загружены правильно, здесь мы нашли наши в журналах, например:
Итак, теперь мы знаем, что он загрузил
Verlag
семейство и находятся ли шрифты внутри этого семейства.Verlag-Book
Verlag-BlackItalic
Verlag-BoldItalic
Verlag-XLight
Verlag-Bold
Verlag-Black
Verlag-XLightItalic
Verlag-LightItalic
Verlag-BookItalic
Verlag-Light
Теперь это имена с учетом регистра, которые мы можем использовать в нашем семействе шрифтов, которое мы можем использовать в нашем родном приложении для реакции.
Got -'em теперь устанавливает шрифт по умолчанию.
Затем, чтобы установить шрифт по умолчанию, чтобы добавить имя вашего семейства шрифтов в вашу
AppDelegate.m
с помощью этой строкиВыполнено.
источник
Это работает для меня: добавить собственный шрифт в React Native
загрузите свои шрифты и поместите их в папку assets / fonts, добавьте эту строку в package.json
затем откройте терминал и запустите эту команду: response-native link
Теперь ты в порядке. Для более подробного шага. перейдите по ссылке выше
источник
Добавить
в
package.json
том запуститьreact-native link
источник
Установить в package.json
И ссылка на реакцию на родную ссылку
источник