Усовершенствуйте свое приложение React.js с помощью этих потрясающих примеров панели поиска!

Привет! Вы хотите добавить панель поиска в свое приложение React.js? Что ж, вам повезло! В этой статье мы рассмотрим различные методы реализации панели поиска в React.js, дополненные примерами кода и понятными объяснениями. Итак, давайте приступим и усовершенствуем ваше приложение!

Метод 1: базовая панель поиска
Давайте начнем с простой панели поиска, которая фильтрует данные на основе пользовательского ввода. Вот пример того, как это можно реализовать:

import React, { useState } from 'react';
const SearchBar = () => {
  const [searchText, setSearchText] = useState('');
  const handleSearch = (e) => {
    setSearchText(e.target.value);
  };
  return (
    <div>
      <input type="text" value={searchText} onChange={handleSearch} />
      <button>Search</button>
    </div>
  );
};
export default SearchBar;

Метод 2: обновленная панель поиска
Иногда вам может потребоваться добавить небольшую задержку перед выполнением поиска, чтобы избежать чрезмерных запросов API. Вот пример улучшенной панели поиска с использованием библиотеки lodash:

import React, { useState } from 'react';
import { debounce } from 'lodash';
const SearchBar = () => {
  const [searchText, setSearchText] = useState('');
  const handleSearch = debounce((text) => {
    // Perform search here
    console.log(text);
  }, 500);
  const handleChange = (e) => {
    const text = e.target.value;
    setSearchText(text);
    handleSearch(text);
  };
  return (
    <div>
      <input type="text" value={searchText} onChange={handleChange} />
    </div>
  );
};
export default SearchBar;

Метод 3: панель автозаполнения поиска.
Панель поиска с автозаполнением предлагает предложения по мере ввода пользователем текста. Вот пример использования библиотеки react-autosuggest:

import React, { useState } from 'react';
import Autosuggest from 'react-autosuggest';
const SearchBar = () => {
  const [searchText, setSearchText] = useState('');
  const [suggestions, setSuggestions] = useState([]);
  const handleSearch = (value) => {
    // Perform search here
    console.log(value);
  };
  const handleChange = (event, { newValue }) => {
    setSearchText(newValue);
  };
  const handleSuggestionsFetchRequested = ({ value }) => {
    // Fetch suggestions here based on the value
    // and update the suggestions state
  };
  const handleSuggestionsClearRequested = () => {
    setSuggestions([]);
  };
  const renderSuggestion = (suggestion) => (
    <div>{suggestion}</div>
  );
  const inputProps = {
    value: searchText,
    onChange: handleChange,
  };
  return (
    <Autosuggest
      suggestions={suggestions}
      onSuggestionsFetchRequested={handleSuggestionsFetchRequested}
      onSuggestionsClearRequested={handleSuggestionsClearRequested}
      getSuggestionValue={(suggestion) => suggestion}
      renderSuggestion={renderSuggestion}
      inputProps={inputProps}
    />
  );
};
export default SearchBar;

Метод 4: панель поиска с фильтрами
Добавление фильтров в панель поиска может улучшить взаимодействие с пользователем. Вот пример панели поиска с фильтрами с использованием библиотеки react-select:

import React, { useState } from 'react';
import Select from 'react-select';
const SearchBar = () => {
  const [searchText, setSearchText] = useState('');
  const [selectedFilter, setSelectedFilter] = useState(null);
  const handleSearch = () => {
    // Perform search here with searchText and selectedFilter
    console.log(searchText, selectedFilter);
  };
  const handleFilterChange = (selectedOption) => {
    setSelectedFilter(selectedOption);
  };
  return (
    <div>
      <input type="text" value={searchText} onChange={(e) => setSearchText(e.target.value)} />
      <Select options={filterOptions} value={selectedFilter} onChange={handleFilterChange} />
      <button onClick={handleSearch}>Search</button>
    </div>
  );
};
export default SearchBar;

Вот и все! Мы рассмотрели четыре различных метода реализации панели поиска в React.js, от базовых до сложных примеров. Не стесняйтесь выбирать тот, который лучше всего соответствует требованиям вашего проекта. Приятного кодирования!