4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

この記事は?

Reactを使って簡単なアプリを開発しました。

  • 開発の中で感じたことを残すことで、他の人がReactで開発する際のヒントになれば。
  • 自身の備忘録のため。

何を作ったのか

商品の金額をxx%offしてくれる計算機
https://nouka.github.io/price-calculator/

ソースコード

なぜ作ったのか

  • 身近に困っている人がいた。
  • React x TypeScriptの学習のため。

何に配慮したのか

  • サーバコストをかけないこと。
  • オフラインでも動作すること。
  • 設定値を端末に保持しておけること。

利用したライブラリなど

ライブラリ名 説明 使用した理由
create-react-app コマンド1つでReactアプリの雛形を作ってくれるツール Reactのプロジェクト作成時には必須。
オフライン動作するためのServiceWorkerも梱包されている。(利用するか否かは選べる)
redux, redux-localstorage アプリのデータを管理するフレームワーク redux-localstorageを使うと、Storeをローカルストレージに保存できる。
material-ui マテリアルデザインに沿ったUIコンポーネントを提供してくれるライブラリ アプリっぽいデザインにしたかったため。
なるべくデザインに時間をかけたくなかったため。
gh-pages コマンド1つで特定のファイル/ディレクトリをgh-pagesブランチにpushしてくれるツール npm run deployでGitHub Pagesに公開するため。

Tips

今後、考慮した方が良いと感じたこと

  • CSS-in-JSを使ったが、スタイルの量が多くなる場合はCSS-Modulesを使った方が、IDEのサポートが得られるので良いと思った。
  • Reducerを1つにしたが、複雑なアプリであれば確実に分けることになるので、この辺りは将来性も考えてどうするか最初に考えた方が良い。

躓いたこと

  • 計算の際に小数点の精度の問題が起こるので注意必要。
  • inputのvalueをintでキャストすると、入力値を全て削除できなくなる(0が勝手に入る)ため、注意。
  • GitHub Pagesでreact-routerを使う場合は、<Router basename={process.env.PUBLIC_URL}>とする。

よかったと感じたこと

  • TypeScript使うとPropTypesから解放される。typeの継承やインポートが使えるので、再利用性が増す。

難しいと感じたこと

  • react-reduxのconnectが分かりづらい。dispatchを毎回呼んだ方がわかりやすかった。
  • atomic design本当に難しくて、一旦共通のコンポーネントはsharedに入れることに。

開発してみた感想

  • 主に嫁しか使っていないが、喜んでいるので良かった。
4
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?