2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Reactでタグ入力 UIを実装するならReact-Selectが便利

Posted at

はじめに

個人開発者のKikoといいます。このようなAI駆動の単語アプリを開発しています

今回、自分の開発のために検索フォームでタイピングするとタグとして入力できるUIを作ろうとしていました。

Reactで作るとなると意外とむずかしかったのですが、React-selectを使うと簡単にできたのでまとめます。

作ろうとしたのはこんなUI

Untitled.gif

React-Select とは

React アプリで「選択 UI」を爆速で作るためのライブラリ。

とくに次のような機能が「何もしなくても」使えるのが特徴です

保存した単語カードにラベルとしてタグを複数つけられるような機能を実装しようとしていました。

検索できるドロップダウン

タイピングすると候補をフィルタリングしてくれる

マルチ選択

複数選べて、pill(タグ)表示になる

カスタムスタイルが簡単

デフォルトでも美しいが、細かく CSS を上書きできる

非同期データでサジェスト

API から検索候補を取ってきて動的に表示できる

Creatable(自由入力)モード

今回使った「新しいタグを自分で追加できる UI」
これは react-select/creatable の機能。

React にはタグ UI が標準で用意されていません。自作すると、次の要素をすべて作る必要があります。

  • pill(タグ)の見た目
  • 入力した文字を Enter で確定させる処理
  • 既存タグのサジェスト表示
  • 複数選択の管理
  • 削除や追加の UI

プロジェクトでの利用シーン

スクリーンショット 2025-12-07 11.36.44.png

私は英単語学習アプリを作っており、各単語に対して次のようなタグ付けが必要でした。

  • 自分で自由にタグを追加したい(例:HP2-CH3, grammar)
  • 既存のタグから選びたい
  • 編集モードでタグの追加・削除を行いたい

このニーズに最も適していたのが CreatableSelect でした。

<CreatableSelect
  isMulti
  value={localTags}
  onChange={(newValue) => setLocalTags([...newValue])}
  placeholder="タグを入力"
/>

これだけで必要な UI がすべて揃います。

  • Enter でタグ化
  • 既存候補のサジェスト
  • pill 表示
  • 削除操作
  • state 管理との連動

実装の流れ

1. 編集モードに入る

単語カードの右下にある✏️を押すと編集モードになり、タグ UI が表示されます。

2. タグ入力 UI で編集する

  • 既存タグ → 初期値として表示される
  • 新規タグ → 入力して Enter
  • 削除 → pill の × ボタン

3. 保存して Supabase に渡す

保存ボタンでタグ配列を親へ渡し、Supabase 側で差分更新を行います。

react-select を使って良かったところ

Enter を押すだけで pill が生成される

自前で作ると地味に大変な部分ですが、ライブラリだけで解決できます。

サジェストが自動で出る

候補配列を渡すだけで補完 UI が完成します。

CSS をほとんど書かなくていい

デフォルトで綺麗な UI が用意されていますが、調整可能です。

型がシンプル

{ label, value } の形式を扱うだけでよく、初心者でも理解しやすいです。

まとめ

タグ UI を自作するとコストが高くなりがちですが、react-select を使うと 短時間で動作するプロトタイプを作りつつ、プロダクションにも耐えられる UI が実装できます。

個人開発や MVP 開発でスピードを出したい人に特におすすめです。

2
0
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
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?