React Native Meetup #10での登壇資料です。
【目次】 - 自己紹介と最近作っているもの - 画面遷移ライブラリなに使ってますか? - React Navigationのアップデート内容と使い方 - ルーティングの指定方法 - Deeplinkとの併用 - Linkコンポーネントの登場 - その他のアップデート
株式会社クリモ CTO 渡邊達明React Navigationを使ってReact Native WebでSPAを試してみた~ React Native Meetup 2020/5/29 ~
View Slide
◉ 自己紹介と最近作っているもの◉ 画面遷移ライブラリなに使ってますか?◉ React Navigationのアップデート内容と使い方○ ルーティングの指定方法○ Deeplinkとの併用○ Linkコンポーネントの登場目次
◉ 渡邊 達明(わたなべ たつあき)◉ Twitter,GitHub: @nabettu◉ 富士通株式会社→面白法人カヤック→独立◉ 妻(代表)と二人で法人◉ ネイティブアプリ(React Native with Expo)& Webフロント(Vue.js, React.js)& Firebase周りが専門です自己紹介
NTTコミュニケーションズ社内ベンチャー発リアルタイムスポーツ実況解説アプリブンデスリーガの配信始めます!SpoLive
tabmemoタブで仕分けできるメモアプリ
作ってます
- wix/react-native-navigation - aksonov/react-native-router-flux - react-navigation/react-navigation - ReactTraining/react-router - その他React Nativeのルーティング何使ってますか?
- wix/react-native-navigation - aksonov/react-native-router-flux - react-navigation/react-navigation - ReactTraining/react-router - その他今日はReact Navigationについてのお話をしますReact Nativeのルーティング何使ってますか?
React Navigation on the Web公式ブログhttps://reactnavigation.org/blog/2020/05/16/web-support/
React Navigation on the Web- 前から React Native Webでの利用は自体はできたけど、画面が変わるだけでURLも変わらず、リロードしたら状態がすべてリセットされてました- 個人的にExpoがv34からWebをサポートしたときに、それを使って3プラットフォーム対応アプリの本を書いてました- https://nabettu.booth.pm/items/1569367今回はその当時からのアップデート内容について発表します
今回のアップデート内容と実際の利用方法
SPA的な”普通の”ルーティングができるようになりました!- URLでルーティングを保持できるようになった!- navigation.navigate実行時に自動で↑のURLが更新されるようになった!- historyのpush/popが動くようになった!
ルーティングの指定方法React Navigation v5からの書き方でつけてたnameと同じkeyでlinkingを指定すると、自動でURLを変更してくれます- パラメータもURLに含めたい場合にはコロンで入れるだけ- URLに載せたい情報だけをパースしたりもできる(stringifyやparseを指定)
ルーティングの指定方法
これらのルーティングとdeeplinkを複合的に使えるようになった- ネイティブとアプリ両方を作ってると必要になってくるdeeplink- 特別な実装をしなくても、deeplinkのURLを指定するだけで実装できます!←ここんとこ
Linkコンポーネントの登場~ パスを指定してWebのリンクっぽく書ける- 今までのReact NavigationではWebのaタグが使えず、リンクにhref属性がつかなかった- 「右クリックで別タブで開く」とかが使えるセマンティックな書き方ができるように- Navigation.navigate無しで遷移できる!※ただ、現状のはテキスト専用になっており、ボタンなどに設定できないので注意
その他細かいアップデートアドレスバーが隠れるように&ドロアーメニュー
サンプルとデモ- サンプルサイトhttps://upgradeexpo37navi5--telopmaker-sample.netlify.app/- サンプルリポジトリhttps://github.com/nabettu/telopmaker-sample/tree/upgradeExpo37Navi5
質問あればTwitterでもhttps://twitter.com/nabettuYouTubeやコミュニティSlackでどうぞThanks!