React.js ライブラリ「downshift」を使用してオートコンプリート機能を実装する

ライブラリ「downshift」をインストールすると、オートコンプリート機能の実装が可能です。ここでは、react.jsで downshift を利用するための手順と簡単な使い方を記述してます。
環境
- OS CentOS Linux release 8.0.1905 (Core)
- node V12.13.1
- npm 6.14.2
- React 16.13.0
react.js環境構築
下記のコマンドで構築してます。ここでは、react-appという名前でプロジェクトを作成してます。
1 |
create-react-app react-app |
downshiftインストール
作成したプロジェクトに移動して、インストールします。
1 2 3 4 5 |
## 作成したプロジェクトに移動 cd react-app ## インストール npm install downshift |
downshift使い方
srcディレクトリにsample.jsと名前で下記のコードを記述します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 |
import React from 'react'; import Downshift from 'downshift'; export const Sample = () => { const items = [ {value: 'apple'}, {value: 'pear'}, {value: 'orange'}, {value: 'grape'}, {value: 'banana'}, ] return ( <Downshift onChange={selection => alert(selection ? `You selected ${selection.value}` : 'Selection Cleared') } itemToString={item => (item ? item.value : '')} > {({ getInputProps, getItemProps, getLabelProps, getMenuProps, isOpen, inputValue, highlightedIndex, selectedItem, getRootProps, }) => ( <div> <label {...getLabelProps()}>Enter a fruit</label> <div style={{display: 'inline-block'}} {...getRootProps({}, {suppressRefError: true})} > <input {...getInputProps()} /> </div> <ul {...getMenuProps()}> {isOpen ? items .filter(item => !inputValue || item.value.includes(inputValue)) .map((item, index) => ( <li {...getItemProps({ key: item.value, index, item, style: { backgroundColor: highlightedIndex === index ? 'lightgray' : 'white', fontWeight: selectedItem === item ? 'bold' : 'normal', }, })} > {item.value} </li> )) : null} </ul> </div> )} </Downshift> ) } export default Sample |
次に、srcディレクトリ配下にあるApp.jsを下記のように編集します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
import React from 'react'; import Sample from './sample'; import './App.css'; function App() { const style = { width: "50%", margin: "0 auto", marginTop: 150 }; return ( <div className="App"> <div style={style}> <Sample /> </div> </div> ); } export default App; |
実行します。
1 |
npm start |
ブラウザから http://プライベートIP:3000にアクセスすると、オートコンプリート機能 が実装されていることが確認できます。

-
前の記事
dockerを使用して「owncloud」を構築する 2020.04.11
-
次の記事
CentOs7 ApacheのDocumentRoot(ドキュメントルート)をコマンドで確認する方法 2020.04.12
コメントを書く