108日目②:プロフィールにGitHubのレポジトリを表示する:Displaying Github Repos

プロフィール画面にGitHubのレポジトリを一覧で表示できるようにしました。具体的には、登録ユーザーがGithubのユーザーネームを入力すれば、一覧でレポジトリの名前と説明欄が表示されるというものです。今回も、新しいファイルProfileGithub.jsを作成しました。

①client/src/components/profile/ProfileGithub.js 新ファイルを作成

今回もReact HooksのuseEffectが大活躍です。そして、登録ユーザーがGitHubのユーザーネームを入力してレポジトリに何もなければスピナーが回ります。レポジトリがある場合は、レポジトリの名前や説明を表示できるようになっており、スターの数、ウォッチャーの数、Forksの数も表示されるようになっています。

(Profile.jsへのimportは前回のレッスンで完了しています。)

import React, { useEffect } from "react";
import PropTypes from "prop-types";
import { connect } from "react-redux";
import Spinner from "../layout/Spinner";
import { getGithubRepos } from "../../actions/profile";

const ProfileGithub = ({ username, getGithubRepos, repos }) => {
  useEffect(() => {
    getGithubRepos(username);
  }, [getGithubRepos]);

  return (
    <div className='profile-github'>
      <h2 className='text-primary my-1'> Github Repos</h2>
      {repos === null ? (
        <Spinner />
      ) : (
        repos.map(repo => (
          <div key={repo.id} className='repo bg-white p-1 my-1'>
            <div>
              <h4>
                <a
                  href={repo.html_url}
                  target='_blank'
                  rel='noopener noreferrer'
                >
                  {repo.name}
                </a>
              </h4>
              <p>{repo.description}</p>
            </div>
            <div>
              <ul>
                <li className='badge badge-primary'>
                  Stars: {repo.stargazers_count}
                </li>
                <li className='badge badge-dark'>
                  Watchers: {repo.watchers_count}
                </li>
                <li className='badge badge-light'>Forks: {repo.forks_count}</li>
              </ul>
            </div>
          </div>
        ))
      )}
    </div>
  );
};

ProfileGithub.propTypes = {
  getGithubRepos: PropTypes.func.isRequired,
  repos: PropTypes.array.isRequired,
  username: PropTypes.string.isRequired
};

const mapStateToProps = state => ({
  repos: state.profile.repos
});

export default connect(
  mapStateToProps,
  { getGithubRepos }
)(ProfileGithub);

現在使用している教材と学習時間:本日の学習時間4.0時間
Udemy:MERN Stack Front To Back: Full Stack React, Redux & Node.js by Brad Traversy

★Section10:Profile Display

-Lec58. Profile Experience & Education Display

-Lec59. Displaying Github Repos(このブログ記事の内容。本日はここまで完了。これでSection10のProfileに関するコーディングは全て完了しました!)

進捗状況:82%

学習時間4.0時間

★参考にした本★

「React.js & Next.js超入門」掌田津耶乃 (秀和システム)

Section4-1: Reduxを使ってみよう

関連キーワード
  • 131日目~134日目:Udemyで一番人気のGit (&GitHub) コースを修了!学習した内容・学習にかかった時間とおすすめ度をご紹介: Completed Git course by Udemy "Git Complete: The definitive, step-by-step guide to Git" by Jason Taylor: Highly recommended to both beginner & intermediate leaner
  • 121日目~130日目:Udemyで新しいReactコース学習とGit & GitHubのコースを受講し始める #100dayofcode Round 2
  • 120日目:プログラミング学習100日チャレンジの完了とこれからの学習&ブログ記事:100days of code completed & from now on
  • 119日目:完成したWebアプリケーションの公開(Devconnector deployed on Heroku)
  • 118日目:Udemy講座の感想口コミ&自分に合った講座の選び方ポイント:Mern Stack Front to Back: Full Stack React, Redux & Node.js by Brad Traversy
  • 117日目:完成!Herokuへのデプロイ成功:Heroku CLIのインストールからWebアプリデプロイまで。Herokuの使い方と、package.jsonとgitコマンドではまったところと解決方法
おすすめの記事
97日目:Redux概要を復習&Redux devtools extension動く& Auth ReducerとRegister Action作成
プログラミング100日チャレンジ記録 #100daysofcode
昨日色々と上手くいかなかったので、本日は復習のみで終わるかと思ったのですが、ユーザーauthenticationのセクションを進めることがで...