File size: 926 Bytes
cce8120 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | import React, { useEffect, useState } from 'react';
import api from '../api';
import { Recipe } from '../types';
const RecipeList: React.FC = () => {
const [recipes, setRecipes] = useState<Recipe[]>([]);
const [error, setError] = useState('');
const fetchRecipes = async () => {
try {
const resp = await api.get<Recipe[]>('/recipes/');
setRecipes(resp.data);
} catch (err: any) {
setError('Failed to load recipes');
}
};
useEffect(() => {
fetchRecipes();
}, []);
return (
<div>
<h2>Recipes</h2>
{error && <p style={{ color: 'red' }}>{error}</p>}
<ul>
{recipes.map(r => (
<li key={r.id}>
<h3>{r.title}</h3>
<p>{r.description}</p>
<pre>Ingredients:\n{r.ingredients}</pre>
<pre>Steps:\n{r.steps}</pre>
</li>
))}
</ul>
</div>
);
};
export default RecipeList;
|