如何在 Material UI 的 ComboBox 輸入框中實現自動完成?
由於其能夠在使用者輸入時提供建議選項從而提升使用者體驗,組合框輸入中的自動完成功能已成為廣受歡迎的功能。Material-UI 作為一款知名的 React UI 框架,提供了一種優雅且簡單的解決方案來實現組合框輸入中的自動完成。
在本文中,我們將逐步探討在 Material-UI 中設定和使用自動完成元件的過程,同時保持一定的複雜性和多樣性。
什麼是組合框自動完成?
組合框中的自動完成是指透過建議選項面板來增強普通的文字輸入。此功能在兩種主要情況下非常有用:
當文字框的值必須從預定義的一組允許值中選擇時,例如在位置欄位(組合框)中。
當文字框可以包含任何任意值,但提供可能的選項可以節省使用者時間時,例如在搜尋欄位中。
使用自動完成的步驟
在將自動完成功能新增到組合框之前,請確保已在 React 專案中設定 Material-UI。請按照以下步驟操作:
步驟 1:建立一個新的 React 應用並安裝 MUI
首先,讓我們建立一個 React 應用並安裝 Material UI。請按照以下步驟操作:
開啟您的終端並執行以下命令:
npx create react app chkproject
專案建立後,透過執行以下命令導航到專案目錄:
cd chkproject
執行以下命令安裝 Material UI 及其依賴項:
npm install @mui/material @emotion/react @emotion/styled
步驟 2:將所需的元件匯入 React
現在,建立新的 React 應用後,在 src 資料夾中有一個 main App.js 檔案。開啟它並匯入所需的元件。
import React from "react"; import { Autocomplete, TextField } from '@mui/material';
現在我們已經設定好了 Material-UI,讓我們繼續將自動完成功能新增到我們的組合框輸入中:
步驟 3:新增資料
要向組合框中新增資料項,我們需要首先建立一個物件陣列,作為自動完成的資料來源。預設情況下,元件接受兩種選項結構。
但是,在本文中,我們將使用以下語法。陣列中的每個物件都將具有一個“id”和一個“label”屬性,它們儲存要顯示的值。
語法如下:
const options = [ { id; 1 label; 'Option 1' } { id; 2 label; 'Option 2' } { id; 3 label; 'Option 3' } // Add options as needed ];
步驟 4:定義自定義組合框
組合框是使用者介面中的元素,允許使用者從列表中選擇選項。當整合自動完成功能時,組合框變得更加強大,使使用者能夠有效地找到他們正在尋找的選項。要在您的 React 元件中建立組合框輸入,您可以使用 Autocomplete 元件。
import React from 'react'; const MyComboBox = () => { return ( <Autocomplete id="combo box" options={options} getOptionLabel={(option) => option.label} renderInput={(params) => <TextField {...params} label="Select an option" />} /> ); }; export default MyComboBox;
在這個例子中,我們將“options”陣列作為 prop 傳遞給 Autocomplete 元件。getOptionLabel prop 用於指定當選擇選項時,應在輸入中顯示 options 陣列的哪個屬性。
步驟 5:處理選擇
Material UI 中的自動完成元件預設處理從資料中選擇專案。我們不需要使用 useState 或 useEffect hook 手動處理選擇。
import React from 'react'; const MyComboBox = () => { return ( <Autocomplete id="combo-box" options={options} getOptionLabel={(option) => option.label} renderInput={(params) => <TextField {...params} label="Select an option" />} /> ); }; export default MyComboBox;
在此程式碼中,我們使用 useState hook 來管理 selectedOption 狀態,並且每當使用者從組合框中選擇選項時都會呼叫 handleOptionChange 函式。
示例 1
下面的示例演示了在組合框中使用自動完成元件。在這個例子中,我們建立了一個自動完成元件,它呈現一個帶有自定義資料的組合框,當用戶輸入資料時,搜尋到的專案會自動完成。
import * as React from "react"; import TextField from "@mui/material/TextField"; import Autocomplete from "@mui/material/Autocomplete"; export default function App() { return ( <div style={{ display: "flex", flexDirection: "column", alignItems: "center", justifyContent: "center", }}> <h1>How to Autocomplete in combo box in Material UI React</h1> <Autocomplete disablePortal id="combo-box-programming" options={data} sx={{ width: 400 }} renderInput={(params) => ( <TextField {...params} label="Programming Languages" /> )} /> </div> ); } const data = [ { label: "Java language" }, { label: "Python language" }, { label: "C++ language" }, { label: "C language" }, { label: "Go language" }, { label: "JavaScript language" }, { label: "SQL" }, { label: "MySQL" }, { label: "HTML" }, { label: "CSS" }, { label: "Nextjs " }, { label: "ReactJS " }, { label: "VueJS " }, { label: "Angular " }, { label: "Angular JS " }, { label: "PHP language" }, { label: "R language" }, { label: "Objective C language" }, { label: "Cobol language" }, { label: "Perl language" }, { label: "Pascal language" }, { label: "LISP language" }, { label: "Fortran language" }, { label: "Swift language" }, { label: "Ruby language" }, { label: "Algol language" }, { label: "Scala language" }, { label: "Rust language" }, { label: "TypeScript language" }, { label: "Dart language" }, { label: "Matlab language" }, { label: "Ada language" }, { label: ".NET language" }, { label: "Bash language" }, ];
輸出

示例 2
下面的示例演示了 Autocomplete 元件的 autoHighlight 功能的使用。
在這種情況下,我們開發了一個元件,該元件在使用者鍵入時會在組合框中生成建議。這些建議基於自定義資料。當用戶選擇一個選項時,它會自動完成並高亮顯示。高亮顯示功能是透過使用該屬性實現的,該屬性是一個布林值。設定為 true 時,第一個選項將自動高亮顯示。
import * as React from "react"; import TextField from "@mui/material/TextField"; import Autocomplete from "@mui/material/Autocomplete"; export default function App() { return ( <div style={{ display: "flex", marginTop: 40, alignItems: "center", justifyContent: "center", }}> <Autocomplete autoHighlight id="combo-box-programming" options={data} sx={{ width: 400 }} renderInput={(params) => ( <TextField {...params} label="Programming Languages" /> )} /> </div> ); } const data = [ { label: "Java language" }, { label: "Python language" }, { label: "C++ language" }, { label: "C language" }, { label: "Go language" }, { label: "JavaScript language" }, { label: "SQL" }, { label: "MySQL" }, { label: "HTML" }, { label: "CSS" }, { label: "Nextjs " }, { label: "ReactJS " }, { label: "VueJS " }, { label: "Angular " }, { label: "Angular JS " }, { label: "PHP language" }, { label: "R language" }, { label: "Objective C language" }, { label: "Cobol language" }, { label: "Perl language" }, { label: "Pascal language" }, { label: "LISP language" }, { label: "Fortran language" }, { label: "Swift language" }, { label: "Ruby language" }, { label: "Algol language" }, { label: "Scala language" }, { label: "Rust language" }, { label: "TypeScript language" }, { label: "Dart language" }, { label: "Matlab language" }, { label: "Ada language" }, { label: ".NET language" }, { label: "Bash language" }, ];
輸出

結論
使用 Material UI 在組合框輸入中啟用自動完成不僅增強了使用者體驗,而且也為使用者介面帶來了優雅感。按照本文提供的步驟,您可以輕鬆地將此功能整合到您的 React 專案中。此外,複雜性和多樣性的運用保證了您的讀者擁有多元化的閱讀體驗。
Material UI 提供的 Autocomplete 元件提供了諸如過濾、分組和高亮顯示等自定義選項。這允許您根據您的需求自定義自動完成行為。採用本文中演示的術語和語言選擇,為您的書面內容注入原創性和專業性。