Next.js(20)
-
Next.js 13 - 14. update & delete버튼구현
사전 작업 글 수정, 삭제 진행 전 사전 작업을 진행하자. 글을 선택하지 않는 홈에서는 수정, 삭제 버튼이 보이지 않아야 하고, 글을 선택한 후에만 수정, 삭제 버튼이 보여야 한다. 그리고 지금은 업데이트 버튼을 누르면 항상 update/1로 이동하는데, 다이나믹 라우팅도 적용시켜보자. 수정, 삭제 버튼이 글 상세 조회에서만 보이도록 처리 이 부분은 layout.tsx에 children 아래 작성된 ul 태그에 작성되어 있다. 그런데 이 코드를 보였다 안 보였다 하려면 주소의 id가 있는지 없는지 확인해야 한다. 그런데 layout.tsx는 id가 있는지 없는지 확인이 불가능하다. /src/app/read/[id]/page.tsx는 id 폴더 밑에 있기 때문에 props.params.id를 통해서 접근할..
2023.08.31 -
Next.js 13 - 13 cache
Cache 이전 장에서 미리 얘기했던 것처럼 새로 글을 생성하고 이동하지만 목록은 변화가 없다! 이건 캐시와 관련되어 있는 내용이다. layout.tsx를 보면 서버에서 글목록을 가져오는 코드가 있다. fetch 명령어를 사용하게 되면 next.js는 기본적으로 한 번 가져온 정보를 저장하게 된다. 이 저장된 내용을 지우기 위해 ctrl + c를 눌러 실행되던 걸 멈추자. 그리고 .next 파일을 지우기 위해 rm -rf .next 를 실행하자. 실행해보면 열려있던 페이지에서 필요한 데이터를 가져오는 걸 볼 수 있다. 강의 내에서는 아래와 같이 터미널이 보이지만 내 터미널에서는 해당 부분이 보이지 않는다. 우선 json-server를 실행한 액세스 기록만으로 cache가 miss해서 다시 요청했는지 여부..
2023.08.31 -
Next.js 13 - 12. 글생성
글 생성 이번에는 create 기능을 구현해보자. 이를 위해 create 폴더 내의 page.tsx 파일을 수정하면 된다. 중첩된 레이아웃을 설명하기 위해 이전에 만든 인위적인 layout.tsx 파일도 있는데 이건 이제 필요없어서 layout.tsx를 지워주고 page.tsx로 다시 시작하자. 만약 에러가 뜨면 일단 개발 서버를 껐다가 다시 켜보고 새로고침 해도 에러가 여전히 뜨면 .next를 지우고 다시 실행해보면 된다. 생성 기능을 위해 form을 만들어주자. 사용자가 어떤 값을 입력하고 create를 클릭했을 때 이벤트를 잡기 위해서는 form에 onSubmit 이 필요하다. 이건 사용자가 상호작용할 때 실행되는데 사용자와 상호작용하는 것은 서버 컴포넌트에서 다루지 않는다. 에러가 발생하게 되고,..
2023.08.31 -
Next.js 13 - 11. 글 읽기
글 읽기 읽기 기능의 경우 사용자와 상호작용하는 게 아니라 내용을 출력할 뿐이라 서버 컴포넌트로 작성하는 게 유리하다. 일단 데이터를 서버로부터 가져와야 하므로 async await를 써준다. // /src/app/read/[id]/page.tsx export default async function Read(props: any) { const resp = await fetch(`http://localhost:9999/topics/${props.params.id}`); const topic = await resp.json(); return ( {topic.title} {topic.body} ); } 참고자료 생활코딩 - Next.js 13 https://opentutorials.org/course/509..
2023.08.31 -
Next.js 13 - 10. 글목록 가져오기
Server Componet VS Client Component Next.js에서는 Server Component, Client Component라는 개념이 구분되어 있다. React 18 버전부터 서버 컴포넌트라는 개념이 추가가 되면서 Next.js가 그걸 가져와서 구분되어 진 것이다. 서버 컴포넌트를 안 써봤다면 지금까지 클라이언트 컴포넌트 방식으로 구현해왔을 것이다. 그리고 클라이언트 컴포넌트에서는 useState, useEffect, onClick, onChange와 같은 것들을 사용할 수 있는데 서버 컴포넌트에서 이런 것들을 사용하게 되면 에러가 발생하게 된다. 두 컴포넌트는 사용할 수 있는 api가 다르다는 것을 기억하면 좋다. 그리고 Next.js에서는 특별한 조치를 취하지 않는다면 서버 컴..
2023.08.31 -
Next.js 13 - 9. backend
Backend 이제 애플리케이션에 생명력을 불러넣어보자. 지금 애플리케이션은 하드코딩 되어 있는 상태이다. 이제 백엔드를 구축해서 백엔드에 있는 데이터를 가지고 와서 동적으로 내용을 표시하도록 처리하자. Next.js를 순수하게 백엔드로도 사용하고 싶다면 매뉴얼의 라우팅 쪽에 Route Handlers 부분을 참고하면 next.js로 api를 구축하는 방법도 공부할 수 있다. 우리는 json server라는 것을 통해 빠르게 백엔드를 구축해보자. npx json-server --port 9999 --watch db.json json-server를 9999 포트에서 실행시킬 것이고 db.json이라는 파일에 내용 정보를 저장하고 그 정보가 바뀌면 바로 반영하기 위해 watch 옵션을 주자. Resource..
2023.08.30