ReactJS中的自动完成和建议
在这篇文章中,我们将学习如何在React JS中创建一个自动完成和建议框。自动完成是每个网站都具备的基本功能之一,但是,在React网站中实现它非常复杂且存在问题。在这里,我们将看到在React JS中轻松实现自动完成的方法。
首先创建一个React项目:
npx create-react-app tutorialpurpose
现在进入项目目录:
cd tutorialpurpose
示例
首先下载一个包:
npm install --save downshift
此库用于为搜索框添加建议列表,列表将写入数组中。
您只需复制以下代码并更改其样式和数组数据。如果您的数组结构包含任何其他键(这里,我使用“value”作为键),那么您只需要更改<ul>标签下键的名称。
在App.js中添加以下代码:
import * as React from "react"; import Downshift from "downshift"; const items = [ { value: "apple" }, { value: "pear" }, { value: "orange" }, { value: "grape" }, { value: "banana" }, ]; export default function App() { 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> ); }
解释
首先,我们创建了一个水果数组。在return中,我们创建了一个Downshift组件,在其中我们定义了选择任何选项后将弹出警报。我们在itemToString属性中将所有项目更改为字符串。
然后在<Downshift>和</Downshift>之间,我们遍历downshift默认设置。
在映射中,我们定义了默认的LabelProps,默认的rootDiv prop,并在<ul>中,我们定义了默认的menu props。menu props是一个我们将从中提出建议的列表。
在<ul>中,我们根据搜索输入框中的输入进行简单过滤,然后遍历它。
在<li>中,我们添加了一些默认属性作为建议和自动完成的参考,以及样式。您可以调整样式,但除非您知道自己在做什么,否则不要调整其他内容。
输出
它将产生以下输出:
广告