如何在 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 组件提供了诸如过滤、分组和高亮显示等自定义选项。这允许您根据您的需求自定义自动完成行为。采用本文中演示的术语和语言选择,为您的书面内容注入原创性和专业性。