인프런 커뮤니티 질문&답변
12.11 home 페이지 구현하기
작성
·
67
0
수정버튼을 클릭해도 edit화면이 나오는게 아닌 이전에 만들었던 번호 페이지만 호출되는데 혹시 어디를 봐야할까요?
퀴즈
MPA와 SPA 페이지 전환 방식의 주요 차이점은 무엇일까요?
깜빡임 vs 부드러움
서버 렌더링 vs 클라이언트 렌더링
항상 전체 새로고침 vs 일부만 변경
개발 복잡 vs 개발 단순
답변 3
0
안녕하세요 에렌님 이정환입니다.
수정 버튼에서 오류가 발생한다면 수정 버튼이 렌더링 되고 있는 파일의 코드를 확인하시면 됩니다. 강의와 동일하게 진행하셨다면 src/pages/diary.js의 Diary 컴포넌트 안에 다음과 같이 작성되어 있을겁니다.

그럼에도 문제가 발생한다면 코드를 살펴봐야 하는데요
프로젝트 진행 도중 발생하는 오류는 전체 코드를 확인해야 그 원인을 정확히 파악할 수 있습니다.
질문 가이드라인을 확인하셔서 전체 프로젝트 코드를 깃허브 또는 구글 드라이브 링크로 전달해 주시면 살펴보겠습니다.
0
안녕하세요, 인프런 AI 인턴입니다. 에렌님.
수정 버튼을 클릭했을 때 의도한 Edit 화면 대신 이전 번호가 호출되는 문제는 주로 라우팅 설정이나 관련 코드에서의 오류에 기인할 수 있습니다. 이러한 문제를 해결하기 위해 다음 사항들을 점검해 보시기 바랍니다:
Router 설정 확인:
react-router-dom을 사용 중이시라면,Route설정 부분에서/edit/:id경로가 올바르게 지정되어 있는지 확인하시기 바랍니다. Edit 페이지로 이동할 때 파라미터를 정확히 전달받고 있는지 점검해주세요.
Link 또는 Navigate 사용:
- 수정 버튼의 링크 또는
navigate설정이 Edit 페이지로 정확히 연결되어 있는지 확인합니다. 예를 들어,navigate(/edit/\({id}`)` 또는 `Link to={`/edit/\){id}}와 같은 방식으로 구성되어야 합니다.
- 수정 버튼의 링크 또는
ID 값 전달 확인:
- Edit 페이지에 올바른 ID가 전달되고 있는지, 그리고 해당 ID가 존재하는 데이터와 연결되어 있는지 확인하세요. ID가 없거나 잘못된 경우, 잘못된 페이지로 연결될 수 있습니다.
- Edit 페이지에 올바른 ID가 전달되고 있는지, 그리고 해당 ID가 존재하는 데이터와 연결되어 있는지 확인하세요. ID가 없거나 잘못된 경우, 잘못된 페이지로 연결될 수 있습니다.
실제 코드 점검:
- 만약 위의 방법으로 해결되지 않는다면, 전체 코드를 살펴보는 것이 도움이 될 수 있습니다. 관련된 코드의 불일치나 오타가 문제를 일으킬 수 있습니다.
- 만약 위의 방법으로 해결되지 않는다면, 전체 코드를 살펴보는 것이 도움이 될 수 있습니다. 관련된 코드의 불일치나 오타가 문제를 일으킬 수 있습니다.
유사한 문제에 대한 질문과 답변이 있었으니, 아래 링크를 참조하셔서 추가적인 해결방법을 찾으시는 것도 좋습니다:
- 리액트 라우팅 오류 및 해결 방법
문제를 해결하시는데 도움이 되기를 바라며, 추가적인 궁금증이 있으면 언제든지 질문해 주세요. 무언가 추가적인 도움이 필요하시다면, 코드를 포함해서 더 구체적인 상황을 알려주시면 더욱 효과적인 도움을 드릴 수 있을 것입니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
0
import { getEmotionImage } from "../util/get-emotion-image";
import Button from "./Button";
import "./DiaryItem.css";
import { useNavigate } from "react-router-dom";
const DiaryItem = ({ id, emotionId, createdDate, content }) => {
const nav = useNavigate();
return (
<div onClick={() => nav(`/diary/${id}`)} className="DiaryItem">
<div className={`img_section img_section_${emotionId}`}>
<img src={getEmotionImage(emotionId)} />
</div>
<div onClick={() => nav(`/diary/${id}`)} className="info_section">
<div className="created_date">
{new Date(createdDate).toLocaleDateString()}
</div>
<div className="content">{content}</div>
</div>
<div className="button-section">
<Button onClick={() => nav(`/edit/${id}`)} text={"수정하기"} />
</div>
</div>
);
};
export default DiaryItem;





코드를 보니 상위 div인 DiaryItem에 onClick 이벤트가 걸려있네요.
저렇게 작성하면 button_section을 클릭해도 diary/id로 나올거에요. (뒤로 가기 1번 누르면 edit이 나오긴 합니다)
onCick 이벤트를 img_section에 넣으셔야 합니다.
작성한 코드는 이벤트 버블링 때문에 하위 요소의 이벤트를 실행할 때, 상위 요소의 이벤트도 같이 실행됩니다.