たとえば、fontFamily
にView
を設定すると、react Nativeで、内部要素がプロパティを継承しないことがわかります。反応ネイティブスタイリングで利用可能なカスケードコンセプトはありますか?どうすればそれを達成できますか?
スタイルプロップの繰り返しを避けるために私が見つけた最も簡単な方法は、コンポーネントにカプセル化することです。例えば:
const Item = ({ text }) => <Text style={{ padding: 10 }}>{text}</Text>
const Consumer = () =>
<View>
<Item text="Item 1" />
<Item text="Item 2" />
<Item text="Item 3" />
</View>
どうやら現時点では、コンポーネントは、親が同じタイプであるか、少なくとも継承するプロパティをサポートしている場合にのみ、親のプロパティを継承できます。私はメインのView
コンポーネントでfontFamilyを設定していましたが、Text
の子には継承されていませんでした。
スタイルオブジェクトを抽出することで、このようなことを実現しました。以下の例。
globalStyle.js
import {StyleSheet} from 'react-native';
export default StyleSheet.create({
myView: {
some view styles
},
myText: {
some text styles
},
});
localStyle.js
import {StyleSheet} from "react-native";
import globalStyle from "../globalStyle";
export default StyleSheet.create({
...globalStyle,
myLocalView: {
local view styles
},
});
anotherLocalStyle.js
import {StyleSheet} from "react-native";
import {myText} from "../globalStyle";
export default StyleSheet.create({
myLocalText: {
...myText,
local text styles
},
});