22
loading...
This website collects cookies to deliver better user experience
{
id: 1,
title: 'buttermilk pancakes',
category: 'breakfast',
price: 15.99,
img: './images/item-1.jpeg',
desc: `I'm baby woke mlkshk wolf bitters live-edge blue bottle, hammock freegan copper mug whatever cold-pressed `,
}
import items from './data';
items.map(item => item.category)
Set
constructor to create a set, which essentially just takes in an array and returns a new array with any duplicates removed (this is good to know ;) ).const allCategories = new Set(items.map(item => item.category))
const allCategories = ['all',...new Set(items.map(item => item.category))];
App
component we create a state variable called categories
and initialize the component with the allCategories array we created above, outside of the component.const [categories, setCategories] = useState(allCategories)
App
component outside of the return statement that filters the items shown given a string.const filterItems = (category) => {
if (category === 'all') {
setMenuItems(items)
return
}
const newItems = items.filter((item) => item.category === category)
setMenuItems(newItems)
}
const Categories = ({categories,filterItems}) => {
return <div className='btn-container'>
{categories.map((category,index) => {
return <button
type='button'
className='filter-btn'
key={index}
onClick={() => filterItems(category)}
>
{category}
</button>
})}
</div>;
};