コース一覧
React Routerとアプリ設計
自由拡張

React Routerとアプリ設計

React Router、Routes・Route・Link、URLパラメータ、検索条件、404、見た目と機能の分離、合成、機能別フォルダを扱う全18レッスンのアプリ設計コースです。fleamaを商品一覧・詳細・出品・カート・マイページを持つ複数ページSPAとして完成させます。

1
ルーティング(React Router v7)
01. ルーティング導入15分
02. RoutesとRoute15分
03. 遷移を作る15分
04. URLパラメータ15分
05. 検索条件をURLに15分
06. 404ページ15分
07. つくる - ページ分割完了20分
08. 第7章クイズ15分
2
コンポーネント設計パターン
01. 見た目と機能の分離15分
02. 合成で組み立てる15分
03. 機能別フォルダ10分
04. つくる - 設計リファクタ20分
05. 第8章クイズ15分
3
総合制作
01. 購入フロー20分
02. マイページ20分
03. 仕上げ15分
04. 自由拡張20分
05. 完成と次のステップ10分

自由拡張

最後は自分で決める

ここまで、作るものはこちらが決めてきました。最後の1つは自分で決めます。fleama に足りないと思う機能を、1つ選んで作ります。

迷ったら次の3つから選んでください。どれも fleama にまだ無いものです。

  • いいね — 気になる商品に印を付け、印の付いたものだけを表示する
  • 並び替え — 価格の安い順と、出品された順を切り替える
  • 表示の切り替え — 一覧をカードで見るか、1行ずつで見るかを切り替える

何を作っても形は同じ

作るものは違っても、中身の形は同じです。状態が1つあり、押すと状態が変わり、変わった状態で表示が変わる。このコースで何度も書いてきた形です。

TypeScript (JSX)

const [cheapFirst, setCheapFirst] = useState(false); const shown = cheapFirst ? [...items].sort((a, b) => a.price - b.price) : items;

並び替えで [...items] と写しを作っているのは、sort が元の配列を並べ替えてしまうからです。state に入っている配列を直に並べ替えると、React から見て中身が変わったことにならず、画面が更新されないことがあります。

新しい知識は要りません。今日やるのは「自分で決めたものを、知っている形に当てはめる」練習です。実務で新しい機能を任されたときにやるのも、だいたいこれです。

自動判定が見るところ

自由に作ったものを機械が採点するので、判定は切り替えが本当に効いているかだけを見ます。何を作るかは自由ですが、次の入れ物は共通で使ってください。

  • extra-title に、作った機能の名前を出す
  • extra-button を押すと状態が変わる
  • extra-state に、いまオンかオフかを出す
  • もう一度押すと、オフに戻る

押しっぱなしで戻らないもの、たとえば一度きりの並び替えは通りません。戻せないということは、状態を持っていないということだからです。一覧の見え方をどう変えるかは自由です。

演習

機能を1つ選び、オンとオフを切り替えられるようにします。

ヒント

state は const [on, setOn] = useState(false); の形で足ります

表示は {on ? "オン" : "オフ"} と書けます

押したときは setOn(!on) で入れ替わります

並び替えを選ぶなら [...items].sort(...) のように写しを作ってから並べ替えます

App.tsx
プレビュー

できているか

  • 一覧が壊れずに出ている
  • 作った機能に名前が付いている
  • 切り替えるボタンがある
  • 最初はオフになっている
  • 1回押すとオンになる
  • もう1回押すとオフに戻る
  • 押したときの処理を書いている
  • any で逃げていない
エディタを読み込んでいます