inflearn logo
강의

Khóa học

Chia sẻ kiến thức

Một trại huấn luyện phát triển toàn diện thực sự dành cho những người không chuyên ngành

그랩님, 상품 상세 페이지 에러와 의문점 질문드립니다.

98

isbcom1004

17 câu hỏi đã được viết

0

그랩님, 강의 잘 듣고 있습니다.

다름이 아니라, 상품 상세 페이지 에러와 의문점이 있어서 어떻게 해결해야 하는지 궁금한 사항이 있어 질문 드리게 되었습니다.

  1. 일단 src/main/index.js 소스 코드를 첨부합니다.


    import './index.css';
    import axios from "axios";
    import React from 'react';
    import {Link} from 'react-router-dom';
    function MainPage(){
        const [products, setProducts]=React.useState([]);
        React.useEffect(
            function(){
                axios.get("제 mock 서버 주소 넣었습니다/products")
                .then(function(result){
                    const products=result.data.products;
                    setProducts(products);
                }).catch(function(error){
                    console.error("에러 발생:",error);
                });
        },[]); return ( 
            <div>    
            <div id="header">
            <div id="header-area">
                <img src="../images/icons/logo.png" />
            </div>
        </div>
        <div id="body">
            <div id="banner">
                <img src="../images/banners/banner1.png" />
            </div>
            <h1>판매되는 상품들</h1>
            <div id="product-list">
                
                {
                     products.map(function(product, index){
                
                        return ( 
    
                    <div className="product-card">
                    <Link className="product-link" to={`/products/${product.id}`}>
                    <div>
    
                    <img className="product-img" src={product.imageUrl} />
                    </div>
                <div className="product-contents">
                    <span className="product-name">{product.name}
                    </span>
                    <span className="product-price">{product.price}원
                    </span>
                    <div className="product-seller">
                        <img className="product-avatar" src="../images/icons/avatar.png" />
                        <span>{product.seller}</span>
                    </div>
                </div>
                </Link>
    
                </div>
                
                
            ); 
                    }) 
                }
    
            </div>
            </div>
        
        <div id="footer"></div>
        </div>
        );
    }
    
    export default MainPage;

    2.src/product/index.js 소스 첨부합니다.

    import {useParams} from 'react-router-dom';
    import axios from "axios";
    import { useEffect, useState } from 'react';
    function ProductPage(){
        // const params=useParams();
        const {id} = useParams();
        const [product, setProduct] = useState(null);
        useEffect(function(){
            axios.get('제 mock 서버 주소 넣었습니다/products/${id}'
            )
            .then(function (result) {
                setProduct(result.data);
                // console.log(result);
            }).catch(function(error){
                console.error(error);
            }
        );
        },[]);
        console.log(product);
        
        // console.log(params);
    
        return <h1>상품 상세 페이지 {id} 상품</h1>;
    }
    export default ProductPage;


    -->여기서부터 의문점과 문제점이 발생하게 되니 읽어주시고 해결할 수 있는 방법을 알려주시면 좋겠습니다. 위 소스에서

    axios.get('제 mock 서버 주소 넣었습니다/products/${id}') 처럼 소스를 달러 중괄호 아이디 입력하면, 아래와 같은 첨부 사진처럼 에러가 납니다.


    상품 상세 페이지 1 구현 에러 axios get url 슬래시 1하면 되는데 문제는 달러 아이디 중괄호하면 안됨 이미지첨부.jpg.webp


    --> 위 에러 첨부 사진은 어떻게 해결해야 할까요?



    3. 하지만, 위 소스대로 입력 안하면
    axios.get('제 mock 서버 주소 넣었습니다/products/1') 하면 제대로 데이터를
    오류 없이
    아래 첨부 사진처럼 받아 오는 것을 알 수 있습니다.

    상품 상세 페이지 1 구현 에러 아닌 소스코드 슬래시 1일때 정상 화면 달러 중괄호 아이디하지 않을 때 잘 되는 화면.jpg.webp




    3-1. 그랩님, 강의 소스에서 처럼 axios.get('제 mock 서버 주소 넣었습니다/products/${id}')해서 하면 위 첨부 사진 처럼 에러가 나는데요, 성공적으로 오류 없이 불러오고 싶은데요, 어떻게 해야 하나요?

     


    단계별로 어떻게 소스를 수정해야하는지 알려주시면 좋겠습니다.

    확인하시면 답변 부탁 드립니다.

HTML/CSS javascript react node.js react-native 머신러닝 express tensorflow

Câu trả lời 2

0

grab

확인이 늦었습니다!
문자열을 처리하는 방식에 ''(따옴표) 과 ``(벡틱)가 있는데, products/${id} 같이 변수를 넣어야 하는경우
``으로 처리를 해줘야 합니다.

예를들면 const id = 1;

const url = 'https://hello.com/products/${id}'
를 하게되면 실제로 url에는 products/1 이렇게 변수가 들어가는 구조가 아닌 문자열 그대로 처리되어 버립니다.

따라서 따옴표가 아닌 벡틱인 `...` 로 처리해주시면 잘 동작할 것 같습니다! {id}'를 하게되면 실제로 실행시 u{}'

0

communityai8509

안녕하세요, 인프런 AI 인턴입니다.
isbcom1004님, 문의 주신 사항에 대해 답변 드리겠습니다.

에러의 원인은 axios.get('제 mock 서버 주소 넣었습니다/products/${id}')에서 잘못된 문자열 템플릿 사용으로 보입니다. 자바스크립트에서 문자열 템플릿을 사용할 때는 백틱(`)을 이용해야 하는데, 잘못된 작은 따옴표(“)를 사용했습니다. 올바른 방법으로 수정해 주세요:

  1. 변경해야 할 코드:
    
    axios.get(`제 mock 서버 주소 넣었습니다/products/${id}`)
    

여기서 핵심은 작은 따옴표가 아닌 백틱(`)을 사용해야 한다는 것입니다. 백틱은 문자열 내에서 변수를 포함하는 문자열 템플릿에 적합합니다.

또한, map 메서드 안에서 구성 요소를 나열할 때 각 요소에 고유한 key를 추가하는 것이 좋습니다. 이는 성능 최적화 및 React에서 리스트의 엘리먼트를 관리하기 위한 일반적인 권장사항입니다. 다음과 같이 수정하시면 됩니다:

  1. map 메서드 사용 시 수정:
    
    {
       products.map(function(product, index){
           return (
               <div className="product-card" key={product.id}>
                   <Link className="product-link" to={`/products/${product.id}`}>
                       <div>
                           <img className="product-img" src={product.imageUrl} />
                       </div>
                       <div className="product-contents">
                           <span className="product-name">{product.name}</span>
                           <span className="product-price">{product.price}원</span>
                           <div className="product-seller">
                               <img className="product-avatar" src="../images/icons/avatar.png" />
                               <span>{product.seller}</span>
                           </div>
                       </div>
                   </Link>
               </div>
           );
       })
    }
    

위의 수정사항을 반영하신 후, 다시 시도해 보시면 문제가 해결될 것입니다. 문제가 지속된다면 추가 정보를 제공해 주시거나, 코드의 다른 부분에서 실수가 있을 수 있습니다.

추가적으로, 이미지와 관련된 에러는 제공해주신 URL로 확인할 수 있습니다: 이미지 1, 이미지 2.

도움이 되셨길 바라며, 추가적으로 궁금한 점 있으면 언제든지 문의 주세요!

[해결]그랩님 답변 주세요.

0

161

2

그랩님의 답변을 기다립니다/102강 전반적인 에러

0

141

2

[그랩님께]101강 안드로이드 에러들(Key prop)해결방법 궁금합니다.

0

123

2

[재질문][그랩님 답변 부탁드립니다]101강

0

140

2

[그랩님 답변 부탁드립니다]101강 Axios 에러와 502 Bad Gateway 질문

0

97

2

Ngrok 설치 후 forwarding Url 에러

0

133

2

[그랩님께,Ngrok 악성코드 인식 해결방법]질문 드립니다.

0

217

2

Ngrok 설치 후 forwarding Url로 연결 불가

0

135

1

그랩님,[꼭] 답변 부탁드립니다.

0

65

1

[꼭][[꼭] 그랩님, 답변 부탁드립니다], Failed to load resource: the server responded with a status of 404 (Not Found) 상품 상세 페이지 질문입니다.

0

149

1

6강/7강 수업

0

51

1

그랩님, 해결되지 않은 에러 메시지 [꼭] 답변 부탁 드립니다.

0

134

2

[재 질문]Cannot read properties of undefined (reading 'map') TypeError: Cannot read properties of undefined (reading 'map') 에러 해결 어떻게 하나요?

0

88

1

Cannot read properties of undefined (reading 'map') TypeError: Cannot read properties of undefined (reading 'map') 에러 해결 어떻게 하나요?

0

127

2

일반적인 css 꾸미기에서 width와 height의 값?

0

90

2

Windows에서의 업로드 후 홈화면 상품이미지 오류 해결방법

0

193

1

그랩마켓 웹화면 구현하기 -2 질문입니다.

0

120

1

react에 반영이 되지 않습니다.

0

236

1

터미널 npm install -g create-react-app 작성 후 오류

0

419

1

create-react-app my app 실행 시 에러

0

354

2

포스트맨 질문

0

100

1

<꼭 답변 부탁 드립니다>그랩선생님, [컴포넌트 사용하기] 강의에서 질문 있습니다.

0

260

2

그랩선생님, 질문 답변 부탁 드립니다.vscode에서 npm install -g create-react-app 입력 후 에러 입니다.

0

473

2

git username 과 gutHub의 이름이 동일해야 하나요?

0

448

1