Step 1: Install Dependencies
- Install React CLI:
npm install
- Install Stash:
npm install stash
Step 2: Set Up React Project
- Create a new React project using Create React App.
- Add these dependencies to your
package-lock.json:react-app:unknown "stash": "^1.1." "react": "^18.2."
Step 3: Create the App File
-
Create a new file
index.jsin your project root:import React from 'react'; import Stash from 'stash'; import { useState } from 'react'; const Home = () => { const [items, setItems] = useState([]); useEffect(() => { const fetchFoodData = async () => { const foodData = await fetch('https://your_food_data_file.txt'); const response = await foodData; const data = await response.json(); setItems(data); if (response.status === 2) { // Clear the response response?.clear(); } }; fetchFoodData(); }, []); return ( <div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4"> {items.map((item, index) => ( <div key={index} className="bg-white rounded-lg shadow-md p-4 cursor-pointer hover:shadow-lg transition-shadow"> <div className="flex items-center justify-between"> <span className="text-gray-7">Item {index + 1}:</span> <p className="text-gray-6"> {item.name} ({item.description} | item.image}) </p> </div> </div> ))} </div> ); };
Step 4: Use the App
- Install dependencies and run the app:
npm start
- Visit
http://localhost:3and explore the app.
Step 5: Implement Sorting and Filtering
-
Add a filter function in
fetchFoodData:fetchFoodData = async () => { const filter = (item) => item.name.toLowerCase().includes('apple'); const foodData = await response.json(); setItems(foodData.filter(item => filter(item))); if (response.status === 2) { response?.clear(); } }; -
Add a sort button in the UI:
useEffect(() => { const handleSort = (e) => { const event = e.target.dataset.filter; setItems(foodData.sort((a, b) => { const compare = (a, b) => { if (a.filter() && b.filter()) { return a.filter().length - b.filter().length; } else if (a.filter() && !b.filter()) { return 1; } else if (!a.filter() && b.filter()) { return -1; } else { return 0; } }); return compare(a, b); }); return handleSort; }; const filtered = foodData.filter(item => item.name.toLowerCase().includes('apple')); const sort = filtered.sort(handleSort); setItems(sort); }, [foodData]);
Step 6: Error Handling
-
Add error handling in
fetchFoodData:fetchFoodData = async () => { try { const filter = (item) => item.name.toLowerCase().includes('apple'); const foodData = await response.json(); setItems(foodData.filter(item => filter(item))); if (response.status === 2) { response?.clear(); } } catch (error) { console.error('Error loading food data:', error); } };
Summary
- Install dependencies using
npm install. - Create the app with the
Homecomponent. - Use useEffect for fetching data and updating the UI.
- Implement filtering and sorting.
- Handle errors gracefully.
This setup provides a basic React app using Stash for fetching food data, displaying items in a grid layout, and allowing users to filter and sort items.









