Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

아티클 상세 페이지에서 본문에 해당하는 내용을 서버로부터 가져옵니다. #132

Merged
merged 4 commits into from
Sep 20, 2023

Conversation

hhhminme
Copy link
Collaborator

📌 이슈 링크


📖 작업 배경

  • 아티클 상세 페이지 작업 중 상단 글 배너, 본문, 하단 프로필에 해당하는 내용을 서버로 부터 가져옵니다.

🛠️ 구현 내용

  • 아티클 상세페이지를 다이나믹 라우트로 분리하여 article의 slug를 path로 받아옵니다.
  • 코멘트 작업은 한번 끊고 다음 Pr에서 가져가도록 하겠습니다.
  • 로그인 작업을 아직 진행하지 않아 글 편집, 삭제 등의 버튼은 주석으로 처리하였습니다. 로그인 로직 처리 후 차후 개발해두겠습니다.

💡 참고사항


🖼️ 스크린샷

Screenshot 2023-09-19 at 10 33 12 PM

@@ -0,0 +1,56 @@
"use client";

export function ArticleComment(): JSX.Element {
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

개발 예정인 컴포넌트입니다. 차후 내용은 서버로 부터 가져와 채울 예정입니다.

<h2 id="introducing-ionic">Description</h2>
<p>{article.description}</p>
<h2 id="introducing-ionic">Main</h2>
<p>{article.body.replace(/\\n/g, "\n")}</p>
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

DB로부터 바로 가져오는지 \n과 같은 내용이 많았습니다. 개행을 하고 싶은건지 잘 모르겠어서 일단 지워줍니다.

@hhhminme hhhminme self-assigned this Sep 19, 2023
Comment on lines 10 to 17
export default async function ArticlePage(): Promise<JSX.Element> {
const headersList = headers();
const activePath = headersList.get("x-invoke-path");
const slug = activePath?.split("/")[2];

if (!slug) {
throw new Error("ERROR : article path is not found");
}
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
export default async function ArticlePage(): Promise<JSX.Element> {
const headersList = headers();
const activePath = headersList.get("x-invoke-path");
const slug = activePath?.split("/")[2];
if (!slug) {
throw new Error("ERROR : article path is not found");
}
type Params = {
slug: string;
}
type ArticlePageProps = {
params: Params;
}
export default async function ArticlePage({ params: { slug } }: ArticlePageProps): Promise<JSX.Element> {

페이지 컴포넌트는 props를 통해 params에 접근할 수 있습니다!

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

감사합니다 이건 몰랐네요 덕분에 간결하게 작성할 수 있었어요

Copy link
Collaborator Author

@hhhminme hhhminme Sep 20, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@hhhminme hhhminme merged commit ddc2778 into pagers-org:team9/hhhminme Sep 20, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants