BLOG

【動画】ReactNativeでスマホ向けニュースアプリをつくろう!APIを使ってニュース記事を表示しよう!

2022-01-14

このブログはロックシステムのYoutubeチャンネル「ロックシステムアカデミーCH」の文字起こしや使用したコードの解説等をしています。
是非動画本編もご覧ください!
よろしければチャンネル登録も宜しくお願い致します!




さー!前回に引き続きReactNativeを使ってニュースアプリを作っていくよ!


1回目で環境設定して2回目で画像と文字を表示するコードを書いてみたんだよね!
まだ見てないって人は是非見てね。

【第1回】ReactNativeでスマホ向けニュースアプリをつくろう!環境設定編
ブログ|ロックシステム
https://
【第2回】ReactNativeでスマホ向けニュースアプリをつくろう!コードを書いてみよう!
ブログ|ロックシステム
https://

今回の第3回でニュースアプリのメイン。ニュース一覧が見れる機能が完成するんだよね。


そうだね!今回動画内で紹介しているのは5つ
・自作コンポーネントの作製方法
・propsの実装
・state・useEffectの実装
・APIの取得
・FlatListの実装
の順で学習していくよ!
難しそうな言葉が並んでるけど、どれもReactNativeでよく使う要素だから最後まで頑張ってアプリの完成を目指そう!


はーい!頑張ってチャレンジしてみるよ!


今回動画内で作成したコードや参照サイトは以下にまとめているよ。
エラーで上手く動かない時等見比べたりコピーして使ってみよう!


■参考サイト
・NewsAPI

・Expo公式ドキュメント

・app.json を使用した構成

・Constants インストール手順API

・Axios

・Flatlist(ReactNative公式)


【使用したコードはこちら】
■ファイル名:App.js
import React, { useState, useEffect } from "react";
import { StyleSheet, View, FlatList } from "react-native";
import NewsKizi from "./components/NewsKizi";
import Constants from "expo-constants";
import axios from "axios";

const URI = `https://newsapi.org/v2/top-headlines?country=jp&category=entertainment&apiKey=${Constants.manifest.extra.newsApiKey}`;

export default function App() {
  const [news, setNews] = useState([]);

  useEffect(() => {
    getNews();
  }, []);

  const getNews = async () => {
    const response = await axios.get(URI);
    setNews(response.data.articles);
  };

  return (
    <View style={styles.container}>
      <FlatList
        data={news}
        renderItem={({ item }) => (
          <NewsKizi
            imageuri={item.urlToImage}
            title={item.title}
            subtext={item.publishedAt}
          />
        )}
        keyExtractor={(item, index) => index.toString()}
      />
    </View>
  );
}

const styles = StyleSheet.create({
  container: {
    flex: 1,
    backgroundColor: "#fff",
  },
});
■ファイル名:NewsKizi.js
import React from "react";
import { StyleSheet, Text, View, Image } from "react-native";

const NewsKizi = ({ imageuri, title, subtext }) => {
  return (
    <View style={styles.box}>
      <View style={styles.moziBox}>
        <Text style={styles.text}>{title}</Text>
        <Text style={styles.subText}>{subtext}</Text>
      </View>

      <View style={styles.gazoBox}>
        <Image style={{ width: 100, height: 100 }} source={{ url: imageuri }} />
      </View>
    </View>
  );
};

export default NewsKizi;

const styles = StyleSheet.create({
  box: {
    height: 100,
    width: "100%",
    borderColor: "lightblue",
    borderWidth: 1,
    flexDirection: "row",
  },

  moziBox: {
    flex: 1,
    backgroundColor: "steelblue",
    padding: 16,
    justifyContent: "space-between",
  },

  gazoBox: {
    width: 100,
    backgroundColor: "powderblue",
  },

  text: {
    fontSize: 16,
  },

  subText: {
    fontSize: 12,
    color: "red",
  },
});

次回はニュース記事の詳細ページを作っていきます!
次回もお楽しみに!


チャンネル登録よろしくお願いします!
ロックシステムアカデミー!ゆっくりプログラミング学習
大阪福島にあるプログラミングスクール「ロックシステムアカデミー」です!「プログラミング作って実践」をテーマに楽しく分かりやすいアプリ開発のレクチャー動画をアップしていきます! チャンネル登録よろしくお願いします! プログラミングスクール ▼「ロックシステムアカデミー」WEBサイト https://rocksystem.co.jp/academy/
https://www.youtube.com/channel/UC6JxNQ2QTX8Dl96V2MMNP8A

株式会社ロックシステム

「ブラック企業をやっつけろ!!」を企業理念にエンジニアが働きやすい環境をつきつめる大阪のシステム開発会社。2014年会社設立以来、残業時間ほぼゼロを達成し、高い従業員還元率でエンジニアファーストな会社としてIT業界に蔓延るブラックなイメージをホワイトに変えられる起爆剤となるべく日々活動中!絶賛エンジニア募集中。