В этом уроке мы узнаем, как создать простой фильтр списка элементов с помощью React JS.

Предпосылки

Прежде чем мы начнем, убедитесь, что у вас есть следующие предварительные условия:

  • Базовые знания React JS и его концепций
  • Node.js и npm установлены на вашем компьютере
  • Редактор кода на ваш выбор

Начиная

Во-первых, давайте создадим новый проект React JS, используя следующую команду:

npx create-react-app list-items-filter

Это создаст новый проект с настройкой React JS по умолчанию.

Настройка компонента фильтра

Далее давайте настроим компонент фильтра, который позволит нам фильтровать список элементов.

Сначала создайте новый файл Filter.js в каталоге src и добавьте следующий код:

import React from 'react';

const Filter = ({ onChange }) => {
  return (
    <input type="text" placeholder="Filter list items" onChange={onChange} />
  );
};

export default Filter;

Этот компонент просто отображает поле ввода с обработчиками событий placeholder и onChange, которые будут запускаться, когда пользователь вводит данные в поле ввода.

Отображение списка предметов

Далее создадим компонент, отображающий список элементов.

Создайте новый файл List.js в каталоге src и добавьте следующий код:

import React from 'react';

const List = ({ items }) => {
  return (
    <ul>
      {items.map(item => (
        <li key={item.id}>{item.name}</li>
      ))}
    </ul>
  );
};

export default List;

Этот компонент просто отображает неупорядоченный список с элементами списка, переданными как свойство items.

Фильтрация списка элементов

Теперь, когда у нас настроены компоненты фильтра и списка, давайте создадим компонент, который будет фильтровать элементы списка на основе ввода пользователя.

Создайте новый файл App.js в каталоге src и добавьте следующий код:

import React, { useState } from 'react';
import Filter from './Filter';
import List from './List';

const App = () => {
  const [items, setItems] = useState([
    { id: 1, name: 'Item 1' },
    { id: 2, name: 'Item 2' },
    { id: 3, name: 'Item 3' },
    { id: 4, name: 'Item 4' },
    { id: 5, name: 'Item 5' }
  ]);
  const [filteredItems, setFilteredItems] = useState(items);

  const handleFilter = e => {
    const searchTerm = e.target.value.toLowerCase();
    const filteredList = items.filter(item =>
      item.name.toLowerCase().includes(searchTerm)
    );
    setFilteredItems(filteredList);
  };

  return (
    <div>
      <Filter onChange={handleFilter} />
      <List items={filteredItems} />
  );
};

export default App;

Этот компонент является корневым компонентом, который будет содержать компоненты фильтра и списка. Он также содержит логику для фильтрации списка элементов.

Во-первых, у нас есть состояние items, в котором хранится исходный список элементов. Затем у нас есть состояние filteredItems, в котором хранится отфильтрованный список элементов.

У нас также есть функция handleFilter, которая срабатывает, когда пользователь вводит текст в поле ввода фильтра. Эта функция фильтрует список items на основе ввода пользователя и обновляет состояние filteredItems с помощью отфильтрованного списка.

Наконец, мы визуализируем компоненты Filter и List и передаем функцию handleFilter и состояние filteredItems в качестве реквизита соответственно.

Подведение итогов

Вот и все! Теперь вы знаете, как создать простой фильтр элементов списка с помощью React JS.

Я надеюсь, что вы нашли этот урок полезным. Удачного кодирования!