Trong ReactJS, filter là một hàm thường được sử dụng để lọc dữ liệu trong mảng và hiển thị một tập hợp con thỏa mãn các điều kiện cụ thể. Hàm này giúp xử lý dữ liệu một cách dễ dàng và hiệu quả trong quá trình hiển thị các thành phần giao diện người dùng.
Dưới đây là các bước cơ bản để sử dụng hàm filter trong ReactJS:
filter
Hàm filter
là một hàm có sẵn trong JavaScript, hoạt động trên các mảng và trả về một mảng mới chỉ bao gồm các phần tử thỏa mãn điều kiện do bạn chỉ định.
Cú pháp:
array.filter(callback(element, index, array), thisArg)
this
bên trong hàm callback.filter
trong ReactGiả sử bạn có một danh sách các sinh viên, và bạn chỉ muốn hiển thị những sinh viên có điểm trung bình lớn hơn 8.
import React from "react";
const students = [
{ id: 1, name: "Nguyễn Văn A", score: 7.5 },
{ id: 2, name: "Trần Thị B", score: 9.0 },
{ id: 3, name: "Lê Văn C", score: 8.2 },
{ id: 4, name: "Phạm Thị D", score: 6.8 },
];
function StudentList() {
const highScoreStudents = students.filter((student) => student.score > 8);
return (
<div>
<h2>Danh sách sinh viên có điểm trên 8:</h2>
<ul>
{highScoreStudents.map((student) => (
<li key={student.id}>
{student.name} - {student.score}
</li>
))}
</ul>
</div>
);
}
export default StudentList;
Trong ví dụ trên:
students.filter(student => student.score > 8)
lọc ra những sinh viên có điểm lớn hơn 8.map
được dùng để duyệt qua mảng đã lọc và hiển thị dữ liệu của từng sinh viên.filter
với dữ liệu động từ stateTrong các ứng dụng React thực tế, dữ liệu có thể được lưu trong state và sẽ thay đổi khi người dùng tương tác với giao diện.
Ví dụ: Tạo một danh sách tìm kiếm tên sinh viên dựa trên input của người dùng.
import React, { useState } from "react";
const students = [
{ id: 1, name: "Nguyễn Văn A", score: 7.5 },
{ id: 2, name: "Trần Thị B", score: 9.0 },
{ id: 3, name: "Lê Văn C", score: 8.2 },
{ id: 4, name: "Phạm Thị D", score: 6.8 },
];
function StudentSearch() {
const [searchTerm, setSearchTerm] = useState("");
const filteredStudents = students.filter((student) =>
student.name.toLowerCase().includes(searchTerm.toLowerCase())
);
return (
<div>
<input
type="text"
placeholder="Tìm sinh viên..."
value={searchTerm}
onChange={(e) => setSearchTerm(e.target.value)}
/>
<ul>
{filteredStudents.map((student) => (
<li key={student.id}>
{student.name} - {student.score}
</li>
))}
</ul>
</div>
);
}
export default StudentSearch;
Trong ví dụ này:
useState
được dùng để lưu trữ từ khóa tìm kiếm.filter
được sử dụng để lọc sinh viên dựa trên từ khóa nhập từ ô tìm kiếm.toLowerCase()
giúp chuyển tất cả ký tự về dạng chữ thường, để phép so sánh không phân biệt chữ hoa hay chữ thường.Nếu bạn lấy dữ liệu từ API và muốn lọc dựa trên phản hồi từ máy chủ, bạn có thể sử dụng filter sau khi đã nhận dữ liệu.
Ví dụ giả sử bạn nhận dữ liệu từ một API và chỉ muốn hiển thị những sản phẩm có giá dưới 100:
import React, { useState, useEffect } from "react";
function ProductList() {
const [products, setProducts] = useState([]);
const [loading, setLoading] = useState(true);
useEffect(() => {
fetch("https://fakestoreapi.com/products")
.then((res) => res.json())
.then((data) => {
setProducts(data);
setLoading(false);
});
}, []);
const affordableProducts = products.filter((product) => product.price < 100);
if (loading) return <p>Đang tải...</p>;
return (
<div>
<h2>Sản phẩm giá dưới 100:</h2>
<ul>
{affordableProducts.map((product) => (
<li key={product.id}>
{product.title} - ${product.price}
</li>
))}
</ul>
</div>
);
}
export default ProductList;
Ở ví dụ này:
https://fakestoreapi.com/products
.Hàm filter trong ReactJS là một công cụ mạnh mẽ cho phép bạn lọc dữ liệu theo các tiêu chí cụ thể và hiển thị chúng trên giao diện người dùng. Khi kết hợp với các hàm khác như map
, reduce
, và sort
, bạn có thể dễ dàng quản lý và hiển thị dữ liệu một cách hiệu quả.