使用钩子RE在REACT中的简单搜索表单。

搜索是Web应用程序最重要的组件之一。让我们举一个电子商务平台的例子,其中有数千种商品在售,但要找到您要查找的特定商品,您需要使用平台提供的搜索组件搜索该商品。

今天我们将学习构建一个简单的搜索表单,该表单使用react从数据列表中搜索。

设置项目

要设置项目,您可以使用其中任何一个 create-react-app 或者你也可以去CodeSandBox。
您可以在此处找到有关设置反应项目的文章。

在创建项目之后,首先,让我们创建一个具有输入字段的简单UI,并显示搜索结果列表。

去吧 index.js 文件位于项目的根目录并清理其中的所有代码并添加以下代码。

import React from "react"; import ReactDOM from "react-dom";  function App() {   return (     <div className="App">       <input         type="text"         placeholder="Search"       />       <ul>         <li>Item 1li>         <li>Item 2li>       ul>     div>   ); }  

在上面的组件中,我们创建了一个简单的输入表单(当前没有做任何事情)和一个将要显示的结果的模拟列表。

现在我们将双向数据绑定应用于输入字段,它基本上从用户获取值并将其保存到状态。

import React from "react"; import ReactDOM from "react-dom";  function App() {  const (searchTerm, setSearchTerm) = React.useState("");   const handleChange = event => {     setSearchTerm(event.target.value);   };   return (     <div className="App">       <input         type="text"         placeholder="Search"         value={searchTerm}         onChange={handleChange}       />       <ul>         <li>Item 1li>         <li>Item 2li>       ul>     div>   ); } 

我们现在创建了一个名为的州 searchTerm 它可以在每次出现时保存搜索输入中的数据 change 事件。该 handleChange 方法需要 event object作为争论并将表单的当前值设置为 searchTerm 国家使用 setSearchTerm 方法提供 React.useState 方法。

现在我们创建一个模拟的数据列表,并根据用户在我们创建的输入框中提供的输入搜索数据。

import React from "react"; import ReactDOM from "react-dom";  const people = (   "Siri",   "Alexa",   "Google",   "Facebook",   "Twitter",   "Linkedin",   "Sinkedin" );  function App() {  const (searchTerm, setSearchTerm) = React.useState("");  const (searchResults, setSearchResults) = React.useState(());  const handleChange = event => {     setSearchTerm(event.target.value);   };    return (     <div className="App">       <input         type="text"         placeholder="Search"         value={searchTerm}         onChange={handleChange}       />       <ul>         <li>Item 1li>         <li>Item 2li>       ul>     div>   ); } 

在上面的代码片段中,我们创建了一个名为的模拟列表/数组 people,我们将从中显示我们组件中的列表。我们还创建了一个名为的州 searchResults 用于设置搜索结果。

现在我们将搜索功能应用于我们的组件。

import React from "react"; import ReactDOM from "react-dom";  const people = (   "Siri",   "Alexa",   "Google",   "Facebook",   "Twitter",   "Linkedin",   "Sinkedin" );  function App() {  const (searchTerm, setSearchTerm) = React.useState("");  const (searchResults, setSearchResults) = React.useState(());  const handleChange = event => {     setSearchTerm(event.target.value);   };  React.useEffect(() => {     const results = people.filter(person =>       person.toLowerCase().includes(searchTerm)     );     setSearchResults(results);   }, (searchTerm));    return (     <div className="App">       <input         type="text"         placeholder="Search"         value={searchTerm}         onChange={handleChange}       />       <ul>          {searchResults.map(item => (           <li>{item}li>         ))}       ul>     div>   ); } 

现在在上面的代码片段中, React.useEffect 使用hook,只要方法的依赖性发生变化就会执行。该 React.useEffect hook有两个参数。第一个参数是在依赖项中的数据被修改时执行的函数,第二个参数是依赖项的数组 React.useEffect 钩取决于。所以每当依赖的值在 React.useEffect hook在其第一个参数执行时更改函数。

所以在 React.useEffect 钩子上面,依赖是 searchTerm 在用户的每个输入上都会改变,而用户又在第一个参数中执行该功能 React.useEffect 钩。执行以下函数

() => {     const results = people.filter(person =>       person.toLowerCase().includes(searchTerm.toLowerCase())     );     setSearchResults(results);   }  

在上面的功能中, filter 方法适用于 people 数组,根据每次迭代返回的条件返回一个新数组。条件是 person.toLowerCase().includes(searchTerm.toLowerCase()) 这意味着如果 person 在人民名单中 includessearchTerm 然后回来 true 否则返回 false

在设置过滤后的列表后 searchResults 国家使用 setSearchResult 由…提供 React.useState 钩。

现在我们将搜索结果设置为状态,我们使用显示它 searchResults.map 在我们的组件中迭代所有的方法 searchResults 并将它们呈现在内部 ul

  <ul>      {searchResults.map(item => (           <li>{item}li>      ))}   </ul> 

最终结果看起来像这样

您可以在此处找到完整的代码

谢谢。

你也可以在Twitter上关注我。

资讯来源:由0x资讯编译自DEV,原文:https://dev.to/asimdahall/simple-search-form-in-react-using-hooks-42pg ,版权归作者所有,未经许可,不得转载
你可能还喜欢