해결된 질문
작성
·
77
0
index.html
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<link rel="icon" type="image/svg+xml" href="/vite.svg" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Emotion Diary</title>
</head>
<body>
<div id="root"></div>
<script type="module" src="/src/main.jsx"></script>
</body>
</html>
New.jsx
import Header from "../components/Header";
import Button from "../components/Button";
import Editor from "../components/Editor";
import { useNavigate } from "react-router-dom";
import { useContext, useEffect } from "react";
import {DiaryDispatchContext} from "../App";
import usePageTitle from "../hooks/usePageTitle";
const New=()=>{
const{onCreate}=useContext(DiaryDispatchContext);
const nav=useNavigate();
usePageTitle(`${useParams.id}번 일기 수정`);
const onSubmit=(input)=>{
onCreate(
input.createdDate.getTime(),
input.emotionId,
input.content
);
nav('/',{replace: true});
};
return (
<div>
<Header title={"write new diary"}
leftChild={<Button
onClick={()=>nav(-1)}
text={"< back"}/>}
/>
<Editor onSubmit={onSubmit}/>
</div>
);
};
export default New;
usePageTitle.jsx
import { useEffect } from "react";
const usePageTitle=(title)=>{
useEffect(()=>{
const $title=document.getElementByTagName("title")[0];
$title.innerText=title;
},[title]);
};
export default usePageTitle;
이전 과정까지는 문제없었는데 12.18에 있는 새일기 쓰기 페이지에 들어왔을 때 페이지에 아무것도 뜨지 않는 문제가 발생하는데 어떤게 문제일까요
답변 2
0
안녕하세요 이정환입니다.
AI 인턴의 답변대로 getElementByTagName가 아닌 getElementsByTagName 으로 사용하셔야 합니다
0
안녕하세요, 인프런 AI 인턴입니다. 진성원님께서 언급하신 문제는 페이지에 아무것도 나타나지 않는 현상으로, 주로 컨텍스트 또는 컴포넌트 내에서 발생하는 논리 오류나 렌더링 오류 때문일 수 있습니다. 몇 가지 점검사항과 개선사항을 제시해 드리겠습니다.
usePageTitle
에서 document.getElementByTagName
이 아닌 document.getElementsByTagName
를 사용해야 합니다. 브라우저는 getElementByTagName
라는 메서드를 인식하지 못합니다. const usePageTitle = (title) => {
useEffect(() => {
const $title = document.getElementsByTagName("title")[0];
$title.innerText = title;
}, [title]);
};
useParams
사용 오류:
useParams.id
를 그대로 사용하면 안 되는 상황입니다. New
컴포넌트에서 id
는 실제로 사용되지 않으며, 새로운 일기를 작성할 때에는 useParams
를 사용할 일이 없습니다. usePageTitle
에 넘기는 인자 값을 다시 확인하세요.컴포넌트 구조 확인:
New
컴포넌트에서 <Editor />
를 사용할 때 onSubmit
메서드를 매핑하셨지만, Editor
컴포넌트 내에서 initData
나 다른 필요한 prop이 없는지 확인해보세요.콘솔 오류 메시지:
Context 및 Router 확인:
DiaryDispatchContext
와 Router
설정이 올바른지 재검토하시고, onCreate
함수가 제대로 정의되고 있는지 확인하세요.useEffect
사용시 주의사항을 설명하는 콘텐츠입니다.위의 방법들을 적용하며 코드를 개선하시면 문제 해결에 도움이 될 것입니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
해결되었습니다!