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
1つの可能性は、次のように 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,
]))
これは、他のパッケージを使用せずにWebスタイルに使用できます(React-nativeの他の回答を参照)。
私は通常PropTypes.objectOf(PropTypes.string)
を使用します。すべてのCSSスタイルを定義する必要はありません。