React NativeでCSSを書く場合、以下のように書くことが多いかと思います。
const styles = StyleSheet.create({ image: { flex: 1, width: 150, height: 150, borderRadius: 4, }, });
これを使って以下のようにstyle属性を渡すと、number型になってしまうようで、これがだめっぽいです。
import { Thumbnail } from 'native-base'; <Thumbnail style={styles.image} source={require('../../assets/img/XXX.png')} />
http://qiita.com/YutamaKotaro/items/d0cd253c998f9b28dd55
にあるように、オブジェクトのIDが渡されるためです。
型チェックに合うようにここでも紹介されている、 StyleSheet.flatten を使ってみましたが、あくまで文字列として見やすく整形しているだけっぽく、内部のオブジェクトはそのままのため、以下のような書き方でも型チェックで弾かれました。
<Thumbnail style={StyleSheet.flatten(styles.image)} source={require('../../assets/img/XXX.png')} />
この方法でうまくいくケースもあるようです。
native base v2 では純粋にオブジェクトを渡すしか方法がないようです。
http://docs.nativebase.io/docs/Migration.html
なんでやねん!とかStyleSheet.flattenするといいよ、などの情報が飛び交っています。
https://github.com/GeekyAnts/NativeBase/issues/510
https://github.com/GeekyAnts/NativeBase/issues/557
StyleSheet.flatten でも直らなかったーみたいな情報も。
https://github.com/shoutem/ui/issues/51#issuecomment-295576294
またstyleのpropTypeの判定に
https://stackoverflow.com/questions/34626298/how-to-declare-style-in-proptypes
で紹介されていた
react-style-proptype
https://github.com/brigand/react-style-proptype
を使いましたが、今は
View.propTypes.style もしくは Text.propTypes.style を使うといいようです。
https://facebook.github.io/react-native/releases/0.21/docs/style.html#pass-styles-around
どこかしらかのタイミングから style に resizeMode 属性は使えなくなったのですが、 View.propTypes.style ではそこをちゃんと弾いてくれます。
image: { resizeMode: 'contain', },
参考
https://facebook.github.io/react-native/docs/stylesheet.html#flatten