Select 要素の項目が多いと、スクロールしてお目当ての項目を探すのは大変だと思います。
現在開発中のプロジェクトでもまさにその状況になったので、解決のために「React Select」というライブラリを導入することにしました。
タイトルにもある通り、検索機能付きの Select 要素を実装できるライブラリです。
公式サイトはこちらから。
GitHub のページはこちらです。
GitHub – JedWatson/react-select: The Select Component for React.js
https://github.com/jedwatson/react-select
さて、まずは下記のコマンドでライブラリをインストールします。
npm install react-select --save
が、こちらをインストールしたところ babel-preset-stage-2 というライブラリが足りないと怒られたので、下記のコマンドを実行しました。
npm install --save-dev babel-preset-stage-2
インストールが完了したら、あとはコードを実装するだけです。
サンプルコードは下記の通りです。
import React from 'react';
import Select from 'react-select';
const options = [
{ value: 'chocolate', label: 'Chocolate' },
{ value: 'strawberry', label: 'Strawberry' },
{ value: 'vanilla', label: 'Vanilla' },
];
class App extends React.Component {
constructor(props) {
super(props);
this.handleChange = this.handleChange.bind(this);
}
handleChange() {
// Select 要素変更時に実行したい処理を記述
}
render() {
return (
<Select
value={options[0]}
onChange={this.handleChange}
options={options} />
);
}
}
module.exports = App;
options に、Select 要素で表示したい項目を指定します。
onChange は、Select 要素の値が変更した時に発火するので、その際に実行したい関数を指定します。
option 要素の設定方法が異なるだけで、あとは通常の Select 要素とほぼ一緒ですね。
あとは、こちらを実行すれば、検索機能付きの Select 要素が実装できるはずです。
以上、React で検索機能付きの Select 要素を実装するためのライブラリ「React Select」のご紹介でした。
ご参考になれば幸いです。