React NativeでWordpressリーダーアプリを作る

2021-01-10
Build a Wordpress reader app with React Native.
前回のReact Native開発環境構築の続きです。実際に動作するアプリを作成します。
作りたいアプリ
作るのはWordpress製のニュースサイトを広告なしで読むためのアプリです。
イメージ図はこんな感じになります。
ニュースサイト一覧 → 記事一覧 → 記事本文
このような画面遷移です。
動画だとこんな感じです。
ポイント
WordPress API
Wordpressでは、URLの最後に/wp-json/wp/v2/posts?_embedを付与することで管理者が禁止していない限り、様々な情報(記事のタイトルや本文、URLなど)をJSON形式で取得することができます。
取得したJSONを整形するとこんな感じです。
管理者側で禁止している場合は403エラーが返ってきます。
そのようなサイトは仕方ないので今回はあきらめます。
react-native-render-htmlを利用する
記事のURLが分かればWebViewで開くことが可能ですが、その場合大量の広告まで一緒にレンダリングされてしまいます。視認性を上げようと思っても、ページに独自のスタイルを当てることは不可能です。
そこで、取得したJSON内の記事本文をreact-native-render-htmlを使ってレンダリングします。これはHTMLタグを含む文字列値をWebViewを介さず100%ネイティブビューにレンダリングするReact Nativeコンポーネントです。
以下の特徴があります。
- WebViewじゃない
- HTMLを100%ネイティブビューにする
- ネイティブビュー要素はあらかじめスタイルが適用されている
- スタイルをカスタマイズできる
- HTMLタグ個別にカスタマイズできる
アプリを構築する
ここからは実際のコードを紹介します。
ボイラープレートの準備
前回の記事でもReact Nativeの動作確認のために使ったボイラープレートを使用します。
ドロワー、スタック、ボトムタブがすでに実装されているので便利ですが、今回はスタックナビゲーションのみを使用します。
作成する画面は以下の3つです。
- ニュースサイト一覧(Sites)
- 記事一覧(NewsList)