diff --git a/src/App.jsx b/src/App.jsx index 7007531..a237256 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -2,6 +2,7 @@ import { BrowserRouter, Routes, Route } from "react-router-dom" import Layout from "./pages/layouts/Layout" import Ingredient from "./pages/ingredient/Ingregdient" import Recipe from "./pages/recipe/Recipe" +import RecipeDetail from "./pages/recipe/RecipeDetail" import {AddRecipe} from "./pages/recipe/AddRecipe" import Join from "./pages/user/Join" @@ -17,6 +18,7 @@ function App() { } /> } /> + }/> } /> diff --git a/src/components/recipe/recipeItem.jsx b/src/components/recipe/recipeItem.jsx index dacd80f..fd68ffc 100644 --- a/src/components/recipe/recipeItem.jsx +++ b/src/components/recipe/recipeItem.jsx @@ -1,10 +1,10 @@ -import recipeImage from "../../assets/image/recipeimage.png" +import defaultRecipeImg from "../../assets/image/recipeimage.png" const RecipeItem = ({ recipe }) => { + const imgSrc = recipe.recipeSource.length!==0?recipe.recipeSource[0].recipeSourceSave:defaultRecipeImg return (
- Default Recipe Image -

사진:{recipe.recipeSource}

+ Recipe Image

이름:{recipe.recipeName}

내용:{recipe.recipeContent}

조리시간:{recipe.recipeCookingTime}(단위)

diff --git a/src/pages/recipe/Recipe.jsx b/src/pages/recipe/Recipe.jsx index 54cedb9..09a4249 100644 --- a/src/pages/recipe/Recipe.jsx +++ b/src/pages/recipe/Recipe.jsx @@ -1,8 +1,7 @@ import { useEffect, useState,useCallback } from "react" import { getRecipeList } from "../../sources/api/recipeAPI.jsx"; import {Route, useNavigate} from "react-router-dom"; -import { AddRecipe} from "./addRecipe.jsx"; -import RecipeItem from "../../components/recipe/recipeItem.jsx" +import RecipeItem from "../../components/recipe/RecipeItem.jsx" import "../../assets/css/recipe/recipe.css" function Recipe() { @@ -43,5 +42,4 @@ function Recipe() { ) } - export default Recipe \ No newline at end of file diff --git a/src/pages/recipe/RecipeDetail.jsx b/src/pages/recipe/RecipeDetail.jsx new file mode 100644 index 0000000..56646b1 --- /dev/null +++ b/src/pages/recipe/RecipeDetail.jsx @@ -0,0 +1,59 @@ +import { useParams } from 'react-router-dom' +import { useEffect, useState,useCallback } from "react" +import { getRecipeDetail } from "../../sources/api/recipeAPI.jsx"; +import defaultRecipeImg from "../../assets/image/recipeimage.png" + + +function RecipeDetail() { + const { recipePk } = useParams() + const [recipeDetail, setRecipeDetail] = useState({}) + useEffect(() => { + const fetchRecipes = async () => { + try { + const data = await getRecipeDetail(recipePk); + console.log("recipeDetail",data); + setRecipeDetail(data); + } catch (err) { + console.error(err); + } + }; + fetchRecipes(); + }, [recipePk]); + + const recipeImage = + recipeDetail.recipeSource && recipeDetail.recipeSource.length > 0 + ? recipeDetail.recipeSource[0] + : defaultRecipeImg; + + return ( + <> +

레시피 상세조회 페이지

+
+ 레시피 이미지 +

이름:{recipeDetail.recipeName}

+

내용:{recipeDetail.recipeContent}

+

조리시간:{recipeDetail.recipeCookingTime}(단위)

+

난이도:{recipeDetail.recipeDifficulty}

+

조회수:{recipeDetail.recipeViews}

+

재료

+ {recipeDetail.ingredients && recipeDetail.ingredients.map(ingredient => (

{ingredient.ingredientName}

))} +

요리과정

+ {recipeDetail.recipeStep && + recipeDetail.recipeStep.map((step, index) => ( +
+

Step {index + 1}: {step.recipeStepContent}

+ {step.recipeStepSource && ( + {`Step + )} +
+ ))} + +
+ + ) +} + +export default RecipeDetail \ No newline at end of file diff --git a/src/sources/api/recipeAPI.jsx b/src/sources/api/recipeAPI.jsx index 21404ce..2d68640 100644 --- a/src/sources/api/recipeAPI.jsx +++ b/src/sources/api/recipeAPI.jsx @@ -4,6 +4,12 @@ export const API_URL_HOST = "http://localhost:8080"; const prefix = `${API_URL_HOST}/recipe`; +export const getRecipeDetail = async (recipePk) => { + const url = `${prefix}/${recipePk}` + const res = await axios.get(url) + return res.data +} + export const getRecipeList = async () => { const url = `${prefix}`; const res = await axios.get(url);