可能是这样的:
import React from "react";
export default function App() {
const [state] = React.useState(products);
const [price, setPrice] = React.useState("");
const [name, setName] = React.useState("");
const filterFunc = (item) => {
return (
String(item.price).includes(price) &&
item.name.toLowerCase().includes(name.toLowerCase())
);
};
const renderProducts = () => {
return state
.slice()
.filter(filterFunc)
.sort((a, b) => a.price - b.price)
.map(({ name, price, description }) => {
return (
<div key={name} style={{ border: "1px solid black", margin: "1rem" }}>
<div>Name: {name}</div>
<div>Price: {price}</div>
<div>Description: {description}</div>
</div>
);
});
};
return (
<div className="App">
<div>
<label>Price:</label>
<input
type="number"
value={price}
onChange={(e) => setPrice(e.target.value)}
/>
</div>
<div>
<label>Name:</label>
<input
type="text"
value={name}
onChange={(e) => setName(e.target.value)}
/>
</div>
{renderProducts()}
</div>
);
}
const products = [
{
name: "Banana",
price: 9,
description: "This is the juiciest red fruit on the planet.",
image: "https://source.unsplash.com/300x300?banana",
},
{
name: "Watermelon",
price: 3.5,
description: "This is the juiciest red fruit on the planet.",
image: "https://source.unsplash.com/300x300?watermelon",
},
{
name: "Mango",
price: 2.5,
description: "This is the juiciest yellow fruit on the planet.",
image: "https://source.unsplash.com/300x300?mango",
},
{
name: "Grapes",
price: 5.0,
description: "This is the juiciest little green fruit on the planet.",
image: "https://source.unsplash.com/300x300?grapes",
},
];