[React]~Ambassador画面8:ソート機能を実装しよう!~

こんにちは、KOUKIです。

Reactで画面開発をハンズオン形式で紹介しています。

今回は、ソート機能の実装を行いましょう。

尚、「React, NextJS and Golang: A Rapid Guide – Advanced」コースを参考にしています。解釈は私が勝手に付けているので、本物をみたい場合は受講をお勧めします!

前回

前回は、検索機能を実装しました。

ソート機能

以前、RedisでSort機能の実装を行いました。

ここでは、URLの末尾に「sort」と「asc/desc」キーワードを指定して、Productの価格順に並べ替えを行いました。

UI側では、この機能を利用して、商品のソート処理を実装しましょう。

プルダウンの設置

ソートの切り替えは、プルダウンで行います。

以前実装したProducts.tsxに実装しましょう。

Filtersモデルの修正

前回作成したFiltersモデルに、sortを追加します。

Filtersモデルの修正に伴い、この型で定義付けた処理の修正を行います。

search関数のsetFiltersでは「q」と指定していますが、これはFiltersのパラメータのkeyである「q」と合わせているので、いい感じに展開してくれます。そのためには、「…props.filters」のように全ての値を展開する処理を先に書く必要があります。

sort関数の実装

sort関数を実装しましょう。

sort関数を実行するために、selectタグにonChangeを指定しました。

ProductsFrontend/BackendのuseEffectの処理を修正しましょう。

FrontEndは、APIへリクエストを飛ばさないので、JavaScriptのsort機能を使って実現しました。

一方、Backend側では、sortキーをURL末尾に付与してからAPIへリクエストを送り、ソートされたデータを受け取ります。

検証

次回

次回は、Lazy Loading機能の実装をしましょう

Reactまとめ

参考書籍


ソースコード

Products.tsx

ProductsFrontend.tsx

ProductsBackend.tsx

filters.ts

コメントを残す