- sysctl kern.maxfilesあたりの上限を上げる必要があった
- npm startしたら案内がちゃんとあった
- User manualとtrouble shootingのリンク切れ
- Expoというdev環境があって便利。同一LAN内であれば実機検証ができるらしいが、僕の家のルーターのDHCP周りが壊れてて使えなかった
コピペでできた
簡単に言うとPropsはにわたすattribute。外部から渡すもの
内部で変化する状態。
constructor(props) {
super(props)
this.state = {hoge: true} // インターフェース生やす
}
_hoge() {
this.setState({hoge: false}); // setStateで差し替え
}とするのが定石。このへんのstate管理は将来的にはMobxでやりたいんだけど、react nativeだけでもお腹いっぱいなのにMobxも学ばなきゃならんのか〜という気持ちがある。
import { StyleSheet } from 'react-native';してから
const styles = StyleSheet.create({
hoge: {
color: yellow;
}
});とするほうが StyleSheet.create しないよりパフォーマンスが良いらしい
大体いつものCSS
webのデフォルトはrowだが、react-nativeのdefaultはcolumnで有ることに注意
onChangeText からの setState で変えていこうな、という話
onPress={function}で回してやろう- Touchしたあとのアクションは
TouchableHighLight,TouchableOpacity,TouchableNativeFeedback(Androidのみ),TouchableWithoutFeedbackなんかで囲う必要があるらしい。Webに寄り添ってると思ったらこの辺iOS, Androidにベッタリなんだな感。WebのReactとか標準コンポーネントだよ〜というより、諸々デバイスのインターフェースをReactComponentで表現してますよ感がある。
ScrollもScrollViewで表現。これもwebとは違うところだな、こっちのほうが筋は良いとは思うが。
Webだとul, liをベタベタ書いていくので馴染みがないコンポーネントだが、繰り返す処理ごとwrapしてある
FetchAPIがある。Web標準のインターフェースだけど個人的にあんまり使い慣れないのでちゃんと学んでおきたい。
ざっくりすべての標準コンポーネントのドキュメントを見て軽く試したりした。魅力的なのもあったけど、下の方はもうちょいドキュメント整備したいなという感じもした(各Componentに動くサンプルコードがあると嬉しい。)
以下気になったところ
Style当てられない。ViewでWrapする必要がある。当てたい人のためにReact Native ELementsというUI Toolkitがあった。標準で用意してくれりゃ良いものをまた学習を一層挟む必要があるのか…(初学者の絶望感
React Nativeっていうのは共通コンポーネントでいろんな環境をサポートするものだと思っていたが、この辺見ちゃうと、いろんな環境のAPIをReactフォーマットで表現しましたよ感が強い気がしている。まぁ仕方ない感じもするし、僕は直近iOSアプリが作りたいので恩恵はあるけども。というかiOS, Androidが提供する新規のAPI周りはどのぐらいの開発スピードでサポートされるんだろうか。
Platform.OS の中に文字列入ってる、Platform.select で分岐っぽいことが楽にできる。
react-native-navigationが開発されている。読んでもどうすれば動くのかよく理解できなかった。動くデモコードがほしい…navigator propsの指し方なんか知らんのじゃ。 iOSのみがターゲットで、ネイティブっぽい動作ならNavigatorIOSが良いらしい。 よくわからなかったのでreact-native-navigationを必要になったらやる。
- 相対パスで画像を指定できるが、指定するときは
require('./path/to/image')で指定する - @2x, @3xとか拡張子前に書いておくと勝手にそうなる
- バックグラウンドにしてネストしたいときは
<ImageBackground>を使って<ImageBackground><Text/></ImageBackground>な感じにする
- 初手知識として
componentDidMountという言葉が出てきたので調べたらReactのLifeCycleだった- https://reactjs.org/docs/react-component.html
- https://qiita.com/koba04/items/66e9c5be8f2e31f28461
- componentDidMount() => マウントされるとき
- componentWillReceiveProps() => propsの更新
- shouldComponentUpdate() => 基本はtrue => renderされる / falseにするとrenderされない / forceUpdateするとこれは呼ばれない
- componentWillUpdate() => Componentが更新する前に呼ばれる
- componentDidUpdate() => Componentが更新された後に呼ばれる
- componentWillUnmount() => アンマウントされるとき
- イージングは https://facebook.github.io/react-native/docs/easing を参照
- https://qiita.com/imaimiami/items/1ad4170c06b1922604dd がわかりやすい