Чтобы получить последовательный стиль элементов Text
(или любой другой базовый элемент, используемый в приложении React Native), наша команда приступила к созданию библиотеки компонентов для нашего приложения, которые соответствуют стилям и названию стилей вместе нашей командой дизайнеров.
Например текст компонент будет выглядеть следующим образом:
import React, { PropTypes, Component } from 'react';
import ReactNative from 'react-native';
export default class Text extends Component {
getProps() {
const { fontSize, fontWeight } = this.props;
return {
fontSize,
fontWeight,
};
}
render() {
return (
<ReactNative.Text {...this.getProps()}>{this.props.children}</ReactNative.Text>
);
}
}
Text.propTypes = {
fontSize: PropTypes.oneOf([
25,
20,
15,
]),
fontWeight: PropTypes.oneOf([
'normal',
'bold',
]),
};
Text.defaultProps = {
fontSize: 20,
fontWeight: 'normal',
};
Создание компонент текста таким образом, вы можете определить, какие стили доступны и шоу-разработчики предупреждают, если они не используют правильный стиль с PropTypes
определения.
Мы также хотели, чтобы компоненты в этой библиотеке могли легко ссылаться на любой файл, в котором они были вам нужны, и поэтому мы дали основному файлу библиотеки имя с комментарием providesModule
, который использует некоторые внутренние компоненты React Native.
Главный файл библиотеки выглядит примерно так.
/**
* @providesModule AppNameLibrary
*/
module.exports = {
get Text() { return require('./Text').default; },
};
Тогда вам просто нужно импортировать его в любой компонентный файл, в котором вам нужен пользовательский компонент текста.
import { Text } from 'AppNameLibrary';
Это один из способов сделать это. Не уверен, что это лучший способ, но это хороший способ, которым наша команда приступила к разработке компонентов, поэтому они разработаны последовательно таким образом, который соответствует нашему руководству по стилю.
Что касается изменения цвета текста компонента TextInput Android, просто назначив color: 'orange'
как стиль, изменив текст на оранжевый для меня. На данный момент мы используем RN 0.28.
Знаете ли вы, как я могу определить такие компоненты во внешнем файле и импортировать их в свой index.android.js? – Kuhbaar
Нашел его как «повторно используемый компонент реакции» https://facebook.github.io/react/docs/reusable-components.html. – Kuhbaar