Quantcast
Channel: CSSタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 8764

React Nativeを書いててCSSの設計についてすごく考えたときの小話

$
0
0

React Nativeを書いててCSSの設計についてすごく考えたときの小話

HTML5 を書いているみなさんは、以下のようなコンポーネントがあったときにフォントサイズをどこに定義しますか?

<li><ahref="/home">home</a><ahref="/about">about</a><ahref="http://google.co.jp/">google</a></li>

継承したらいいので liに書くぜ :raised_hand::raised_hand::raised_hand::raised_hand:

li{font-size:20px;}

文字列のすぐ上の要素の aに書くぜ :hand_splayed::hand_splayed::hand_splayed::hand_splayed:

a{font-size:20px;}

さてReact Nativeではどう書くのでしょうか。それを見ていきます。

環境構築

ここを参考に構築しました。React Native for WEB
react-native-web を試す

# プロジェクト作成
npx create-react-app react-native-web-simple

# ディレクトリ移動とnpmモジュールのインストールcd react-native-web-simple
yarn add react-native-web

# リンク先に書かれているように2ファイルを編集
vim src/index.js
vim src/App.js

でいろいろ試せると思います。

いろいろ見てみる

エラーとかわかる人は自分でみてみてください!!こんな感じ。

スクリーンショット 2020-03-11 2.33.44.png

<View>というコンポーネントは文字列を入れるためのコンポーネントではないので Unexpected text node: ここはエラーがでる. A text node cannot be a child of a <View>.って言われます。

<Viewstyle={[{fontSize:'50px'}]}>ここはエラーがでる</View>

なので以下のように書きます。

<View><Text>ここはエラーがでない</Text>
</View>

list形式の FlatListというコンポーネントにフォントサイズを渡しても文字は大きくなりません。

<FlatListstyle={[{fontSize:'50px'}]}// style効かないよ!!/>

簡単にまとめ

MECEではないかもしれませんが <Text>に代表されるように文字列をいれるコンポーネントと、 Viewに代表されるような文字列は入らずに箱の大きさなどを調整するマークアップ用のコンポーネントがある感じがあります。

ReactNativeを少し書いたおかげで、HTML5を書いている時に divliaとかをスタイリングするときは少しだけ考えるようになりました。

こちらの React Native for Webをプロダクションで使ってみましたというブログでもReact Native for Webを使ってWeb系の方が苦戦しているのが垣間見れます。

おわりに

ReactNative では li 要素にフォントサイズは効きませんでした。ですが、HTML5としてはどっちでもいいと思います。新しい技術を触ると今までの考え方が更新されるのでとても新鮮な気持ちになれますよね。これからは同じ <div>でも スタイルを整えるために入れたのか 文字を入れるために入れた要素なのか意識していきたいです。

お試しで書いていたらすごく考えさせられたのでその時のことを書いていきます。ありがとうございました。!!!!
(Webだけで生きていたので、ギブス巻かれたようにエラー出しまくりました。React Nativeはいまでも初心者です。)

.


Viewing all articles
Browse latest Browse all 8764

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>