В этом уроке мы узнаем, как создать простой фильтр списка элементов с помощью 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.
Я надеюсь, что вы нашли этот урок полезным. Удачного кодирования!