Панель поиска - очень распространенный тип ввода на многих веб-сайтах. Это улучшает пользовательский опыт любого веб-приложения. Это достигается за счет сокращения времени, затрачиваемого на поиск данных из очень длинных списков. Некоторым разработчикам может быть сложно добавить панель поиска в одностраничное приложение. Эта статья покажет вам шаг за шагом, как фильтровать длинный список данных с помощью панели поиска в React js.
Шаг 1
Создайте новое приложение React. Назовите это поисковым приложением. Прочтите шаги по установке React здесь
npx create-react-app search-app
Шаг 2
Создайте папку с именем components внутри папки / src вашего проекта приложения. Внутри папки компонентов создайте файл с именем searchBar.js. Импортируйте React и привязку useState к этому файлу.
import React, {useState} from 'react'
Шаг 3
Создайте функциональный компонент под названием searchBar, используя синтаксис ES6.
import React, {useState} from 'react' const searchBar = () => {}
Шаг 4
Для searchBar создайте переменную с помощью хука useState ().
const [searchInput, setSearchInput] = useState("");
Шаг 5
Теперь создайте постоянный массив стран со свойствами name и continent.
const [searchInput, setSearchInput] = useState(""); const countries = [ { name: "Belgium", continent: "Europe" }, { name: "India", continent: "Asia" }, { name: "Bolivia", continent: "South America" }, { name: "Ghana", continent: "Africa" }, { name: "Japan", continent: "Asia" }, { name: "Canada", continent: "North America" }, { name: "New Zealand", continent: "Australasia" }, { name: "Italy", continent: "Europe" }, { name: "South Africa", continent: "Africa" }, { name: "China", continent: "Asia" }, { name: "Paraguay", continent: "South America" }, { name: "Usa", continent: "North America" }, { name: "France", continent: "Europe" }, { name: "Botswana", continent: "Africa" }, { name: "Spain", continent: "Europe" }, { name: "Senegal", continent: "Africa" }, { name: "Brazil", continent: "South America" }, { name: "Denmark", continent: "Europe" }, { name: "Mexico", continent: "South America" }, { name: "Australia", continent: "Australasia" }, { name: "Tanzania", continent: "Africa" }, { name: "Bangladesh", continent: "Asia" }, { name: "Portugal", continent: "Europe" }, { name: "Pakistan", continent"Asia" }, ];
Шаг 6
Создайте функцию-обработчик, которая будет считывать изменения в строке поиска. Затем создайте оператор if, который вернет страны, соответствующие тому, что было введено в строку поиска.
const handleChange = (e) => { e.preventDefault(); setSearchInput(e.target.value); }; if (searchInput.length > 0) { countries.filter((country) => { return country.name.match(searchInput); }); }
Шаг 7
Затем создайте и введите поиск типа внутри оператора возврата searchBar, который пользователь будет вводить.
<input type="text" placeholder="Search here" onChange={handleChange} value={searchInput} />
Шаг 8
Наконец, создайте элемент Table, который будет отображать полный список стран. В нем должно быть две колонки. Это столбец имени и столбец континента.
<div> <input type="text" placeholder="Search here" onChange={handleChange} value={searchInput} /> <table> <tr> <th>Country</th> <th>Continent</th> </tr> {countries.map((country, index) => { <tr> <td>{countries.name}</td> <td>{countries.continent}</td> </tr> })} </table> </div>
Окончательный файл searchBar.js должен выглядеть следующим образом.
import React, {useState} from 'react' const searchBar = () => { const [searchInput, setSearchInput] = useState(""); const countries = [ { name: "Belgium", continent: "Europe" }, { name: "India", continent: "Asia" }, { name: "Bolivia", continent: "South America" }, { name: "Ghana", continent: "Africa" }, { name: "Japan", continent: "Asia" }, { name: "Canada", continent: "North America" }, { name: "New Zealand", continent: "Australasia" }, { name: "Italy", continent: "Europe" }, { name: "South Africa", continent: "Africa" }, { name: "China", continent: "Asia" }, { name: "Paraguay", continent: "South America" }, { name: "Usa", continent: "North America" }, { name: "France", continent: "Europe" }, { name: "Botswana", continent: "Africa" }, { name: "Spain", continent: "Europe" }, { name: "Senegal", continent: "Africa" }, { name: "Brazil", continent: "South America" }, { name: "Denmark", continent: "Europe" }, { name: "Mexico", continent: "South America" }, { name: "Australia", continent: "Australasia" }, { name: "Tanzania", continent: "Africa" }, { name: "Bangladesh", continent: "Asia" }, { name: "Portugal", continent: "Europe" }, { name: "Pakistan", continent"Asia" }, ]; const handleChange = (e) => { e.preventDefault(); setSearchInput(e.target.value); }; if (searchInput.length > 0) { countries.filter((country) => { return country.name.match(searchInput); }); } return <div> <input type="search" placeholder="Search here" onChange={handleChange} value={searchInput} /> <table> <tr> <th>Country</th> <th>Continent</th> </tr> {countries.map((country, index) => { <div> <tr> <td>{country.name}</td> <td>{country.continent}</td> </tr> </div> })} </table> </div> }; export default searchBar;
Шаг 9
Импортируйте компонент searchBar в файл app.js и добавьте его в оператор возврата JSX следующим образом.
import React from 'react' import './App.css' import SearchBar from './components/searchBar' function App() { return ( <div classname='App'> <SearchBar/> </div> )}export default App
Запустите приложение.
Заключение
И вот оно. Надеюсь, вы нашли это полезным. Я вернусь с более интересными статьями. Спасибо за чтение.
Больше контента на plainenglish.io