Code Monkey home page Code Monkey logo

github-incremental-search-react-redux's Introduction

Github Incremental Search React Redux

開発にあたって

  • React Redux Starter Kit をベースに作成
    • インターン先のWebアプケーションがこれをベースにしてるため

使用したフレームワーク・ライブラリ等

package.json

"dependencies": {
  "axios": "^0.16.2",
  "bootstrap": "^4.0.0-alpha",
  "compression": "^1.6.2",
  "dotenv": "^4.0.0",
  "express": "^4.14.0",
  "object-assign": "^4.1.1",
  "promise": "^7.1.1",
  "prop-types": "^15.5.10",
  "react": "^15.5.4",
  "react-dom": "^15.5.4",
  "react-redux": "^5.0.4",
  "react-router": "^3.0.0",
  "redbox-react": "^1.3.6",
  "redux": "^3.6.0",
  "redux-thunk": "^2.2.0",
  "whatwg-fetch": "^2.0.3"
},

動作説明

  • ルートディレクトリで $ npm start を実行
  • http://localhost:3000/repository にアクセス
    • Chromeだと一部レイアウトが崩れていたのでSafariの方がいいと思います
    • /home, /counter は React Redux Starter Kit のデフォルトページ

Personal Access Tokenの設定

  • .env
GITHUB_ACCESS_TOKEN=********

確認が取れなかったため以下の方法でお願いします

  • /src/constants/index.js
GITHUB_ACCESS_TOKEN: '********',

State

  • searchedRepos
    • SearchAPIのGET処理で取得したリポジトリ配列
  • searchWord
    • インクリメンタルサーチの検索ワード
  • reqLimit
    • SearchAPIのリクエスト状態にリミットがかかっているかどうか
  • sortParam
    • SearchAPIのGET処理のオプションで使うsortパラメータ
  • watchedRepos
    • WatchAPIのGET処理で取得したリポジトリ配列
  • filterWord
    • Watchしているリポジトリ一覧をさらにフィルターをかけて表示するためのワード
  • filteredRepos
    • Watchしているリポジトリからフィルターされて表示するリポジトリ配列

Actions

  • CHANGE_SEARCH_KEYWORD
  • CHANGE_SEARCHED_REPOS
  • CHANGE_SEARCH_REQUEST_LIMIT
  • CHANGE_SORT_PARAM
  • DELETE_SEACHED_REPOS_LIST_ALL
  • CHANGE_WATCHED_REPOS
  • CHANGE_FILTER_KEYWORD
  • CHANGE_FILTER_WATCHED_ROPOS
  • DELETE_REPO_FROM_WATCHED_LIST

主な操作・動作

  • Searchエリア
    • テキスト入力によるインクリメンタルサーチ
      • 最大50件の取得・表示
    • selectボタンでsortパラメータを変更
    • WatchボタンでリポジトリをWatch状態に変更(フィードバックなし)
      • 変更後、最新のWatchedリポジトリを取得

  • Watchエリア
    • Updateボタンで最新のWatchedリポジトリを取得して表示
      • 最大100件を取得し、うち最大50件が表示される
    • Unwatchボタンを押すとリストから消える
    • テキスト入力によりフィルターをかけて表示

工夫点

  • SearchAPIのリミットに達した場合にアラートを表示
    • Access Tokenを使用した場合でも1分間に30リクエストまでであるため
  • よりわかりやすいようにユーザのアバターを表示
  • star数は重要な指標になるので表示

懸念点

  • searchの方は自分がwatchしているかどうかに関係なくWatchボタンが表示される
  • Watchボタンを押しても成功したかどうかわかりづらい
    • フィードバックがない
    • Watededリポジトリを更新するようにしているが、サーバー側で反映されるのが遅い
  • Watchしているリポジトリを更新が最近の順に表示したいが、クエリパラメーターが用意されていない?
    • 何順なのかよくわからない
  • ページネーション未対応
    • Watchしているリポジトリは1回リクエストで最大100件取得するようにしているが、すベて取得できるわけでない
  • レスポンシブ未対応
    • 画面幅が小さいとリストのレイアウトが崩れる

github-incremental-search-react-redux's People

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.