Ответ 1
React Native теперь содержит ViewPropTypes
, который заменит View.propTypes.style
. Пример использования:
import { ViewPropTypes } from 'react-native';
MyComponent.propTypes = {
style: ViewPropTypes.style
};
Если включено правило forbid-prop-types, eslint
запрещает мне использовать style: React.PropTypes.object
и использовать shape
.
Но действительно ли необходимо определить все доступные свойства для этой цели?
DEMO.propTypes = {
style: React.PropTypes.shape({
color: React.PropTypes.string,
fontSize: React.PropTypes.number,
...
})
};
Слишком много кода определения!
React Native теперь содержит ViewPropTypes
, который заменит View.propTypes.style
. Пример использования:
import { ViewPropTypes } from 'react-native';
MyComponent.propTypes = {
style: ViewPropTypes.style
};
View.propTypes.style
или
Text.propTypes.style
Это будет выглядеть так:
DEMO.propTypes = {
style: Text.propTypes.style,
...
};
https://facebook.github.io/react-native/releases/0.21/docs/style.html#pass-styles-around
Одна из возможностей заключается в использовании пакета react-style-proptype:
import stylePropType from 'react-style-proptype';
MyComponent.propTypes = {
style: stylePropType,
};
Используйте простой код, как показано ниже.
PropTypes.oneOfType([PropTypes.object, PropTypes.array])
Итак, вы можете применить к этому свой код.
DEMO.propTypes = {
style: PropTypes.oneOfType([PropTypes.object, PropTypes.array]),
};
Проверено в RN> 0,57.
Используйте ViewPropTypes.style
. View.propTypes
устарела
Быстро и грязно/взломать
Расширяя @jalal246 ответ:
PropTypes.objectOf(PropTypes.oneOfType([
PropTypes.string,
PropTypes.number,
]))
Это можно использовать для веб-стилей (см. другие ответы для React-native), не используя для этого другой пакет.
Я обычно использую PropTypes.objectOf(PropTypes.string)
, нет необходимости определять весь стиль CSS.