Я новичок в React и понимаю преимущества встроенных стилей на основе компонентов. Но мне интересно, есть ли достойный способ создать какой-то глобальный стиль. Например, я хотел бы использовать одинаковую окраску текста и кнопок во всем своем приложении.
Вместо того, чтобы повторять в каждом компоненте (и впоследствии при необходимости менять его в x местах), моя первоначальная мысль - создать «базовый» класс StyleSheet в собственном файле и импортировать его в мои компоненты.
Есть ли способ лучше или лучше реагировать?
react-native
Патм
источник
источник
import { StyleSheet } from 'react-native';
style={defaultStyle}
добавить каждый компонент со стилем по умолчанию . Вместо этого вы можете создатьDefaultView
и использовать его вместо предоставленногоview
, стилизованного под вашу спецификацию.Создайте файл для своих стилей (IE,
Style.js
).Вот пример:
В любой из файлов, в которых вы хотите использовать свой стиль, добавьте следующее:
источник
Вы также можете попробовать response-native-extended-stylesheet, который поддерживает глобальные переменные стиля:
источник
Если вы просто хотите установить некоторые глобальные переменные, вы можете попробовать.
AppStyles.js
index.ios.js
источник
Вы должны создать файл для хранения всех стилей в нем, например, styles.js , и написать код типа css по мере необходимости.
и теперь вы можете использовать глобальный стиль, как видите
источник
Попробуйте мою библиотеку react-native-style-tachyons , которая не только дает вам глобальные стили, но и предлагает ориентированную на дизайн адаптивную систему компоновки с шириной и высотой относительно вашего корневого шрифта.
источник
Все эти методы напрямую отвечают на вопрос, но, насколько я понимаю, это не способ сделать это в системе проектирования на основе компонентов, такой как React.
Мы можем начать с атомарных компонентов, затем наслоить и сгруппировать их до самого верха. Следующая статья может прояснить этот ход мыслей: http://atomicdesign.bradfrost.com/chapter-2/
Если вам нужен несуществующий базовый компонент, вы его создаете. Затем вы можете сделать из него другие, менее специфические компоненты. например:
// rerender is cheaper without style prop when // the default style is an unchanged reference // instead of a new object every time. const style = { color : 'MidnightBlue', fontSize: 14, } function getStyle (styleProp) { // styleProp is able to overwrite style if (styleProp) return {...style, ...styleProp} else return style } export default function CustomText (props) { return ( <Text style={getStyle(props.style)}> {props.children} </Text> ) }
Тогда используйте
CustomText
везде вместоText
. Вы также можете сделать это сView
,div
,span
или что - нибудь еще.источник
<Text />
с<CustomText />
везде. Вы даже можете импортировать CustomText как текст, поэтому вам нужно только заменить импорт.Внешний файл CSS main.css
создать экземпляр файла css в компоненте.
источник
Здесь вы можете найти элегантный способ сортировки ваших стилей, а затем импортировать их в различные компоненты, вы можете создать папку, в которой вы собираете все файлы стилей, и создать index.js, который будет работать как фасад:
index.js будет выглядеть так:
а затем импортируйте вот так:
Здесь для получения дополнительной информации:
https://oughttbot.com/blog/structure-for-styling-in-react-native
источник
Я работал с похожими
Создайте каталог с именем 'constants'. Создайте файл в ./constants/AppStyles.js.
Затем в App.js укажите ссылку на этот файл и созданные стили.
Ловушки, в которые я попал
Нашел хороший курс в Интернете и понял это оттуда
источник
Взгляните на темы Shoutem для React Native.
Вот что вы получаете с Shoutem Theme:
Глобальный стиль, в котором определенный стиль автоматически применяется к компоненту по его имени:
Активация определенного стиля компонента с помощью
styleName
(например, класса CSS):Автоматическое наследование стилей:
Вложенный стиль для составных компонентов:
Чтобы заставить его работать, вам нужно использовать
StyleProvider
компонент-оболочку, который предоставляет стиль всем остальным компонентам через контекст. Похоже на ReduxStoreProvider
.Также вам необходимо связать свой компонент со стилем,
connectStyle
чтобы вы всегда использовали связанный компонент. Подобно Reduxconnect
.Вы можете увидеть пример в документации.
И последнее: мы также предоставили набор компонентов в нашем UI ToolKit, которые уже связаны со стилем, поэтому вы можете просто импортировать их и стилизовать в своем глобальном стиле / теме.
источник