前回記事で作った、fetchAPIを利用したニュースアプリにサムネイル表示機能を実装する。
https://chusotsu-program.com/react-native-fetch-api
まずは成果物から見てみよう。
縦並びの記事リスト。
各記事は左にサムネイル、右に記事タイトルとドメインを表示させている。
それでは前回記事で編集したApp.jsをベースにコードを追記していく。
ライブラリのインポート
今回は画像表示用のImageコンポーネントを追加でインポートする。
import {
Text, View, FlatList, Image
} from 'react-native';
取得したサムネイル画像を表示させる
すでにfetchAPIで必要な情報は全てJSON形式で取得しているので、今回編集するコードはrenderメソッド内のみだ。
まずは画像表示用のコードを確認しておこう。
<Image
style={{
width: 50,
height: 50
}}
source={item.data.thumbnail}
/>
Imageコンポーネントは、画像の幅・高さを指定しないと画像が表示されないため、今回はそれぞれの値を50に設定する。
記事タイトルと横並びにしたいので、出来上がりのコードは以下のようになる。
<View style={{
flex: 1,
flexDirection: 'row',
width: '100%'
}}>
<Image
style={{
width: 50,
height: 50
}}
source={item.data.thumbnail}
/>
<Text>{item.data.title}</Text>
</View>
記事のサイトドメインを表示させる
次に記事タイトルの下にドメインを表示させる。
現在、画像とテキスト部分(タイトル)が横並びとなっているが、ドメインもタイトルを内包するViewに加えたいので、Imageの後にViewを追加し二つのTextコンポーネントを中に入れる。
<View style={{
flex: 1,
flexDirection: 'row',
width: '100%'
}}>
<Image
style={{
width: 50,
height: 50
}}
source={item.data.thumbnail}
/>
<View style={{
flex: 1,
flexDirection: 'column'
}}>
<Text>{item.data.title}</Text>
<Text style={{color: '#ababab', fontSize: 10}}>{item.data.domain}</Text>
</View>
</View>
ここまで紹介したコードのとおりrenderメソッドを更新すると、以下のようなUIとなるはずだ。
これでニュースアプリの原型となる記事リストのUIが出来上がった。