[Next.js]uid에서 페이지를 동적으로 생성하려면 다음과 같이 하십시오.
하고 싶은 일
새 발언 버튼을 눌렀을 때
/articles/[uuid]/edit
이런 URL을 만들고 싶어요.
방법
next/link 또는 next/router 사용
4
import Link from 'next/link'
function Posts({ posts }) {
return (
<ul>
{posts.map((post) => (
<li key={post.id}>
<Link href={`/articles/${encodeURIComponent(uuid)}`}/edit>
<a>{post.title}</a>
</Link>
</li>
))}
</ul>
)
}
export default Posts
4import { useRouter } from 'next/router'
export default function Page() {
const router = useRouter()
return (
<button type="button" onClick={() => router.push('/articles/[uuid]/edit')}>
Click me
</button>
)
}
Hooks can only be called inside of the body of a function component
다음 단추를 눌렀을 때createNewArtical을 실행합니다
“Hooks can only be called inside of the body of a function component”
출력 오류
import { NextRouter, Router, useRouter } from 'next/router';
import { uuid } from 'uuidv4';
const createNewArticle = () => {
const router = useRouter();
router.push({
pathname: '/articles/[uuid]/edit',
query: { uuid: uuid() },
});
};
const Hogehoge = () => {
return (
<>
...省略
<button
type="button"
onClick={() => createNewNote()}
>
投稿
</button>
</>
);
};
Unhandled Runtime Error
Error: Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for one of the following reasons:
1. You might have mismatching versions of React and the renderer (such as React DOM)
2. You might be breaking the Rules of Hooks
3. You might have more than one copy of React in the same app
See https://reactjs.org/link/invalid-hook-call for tips about how to debug and fix this problem.
까닭
왜냐하면useRouter가create New Artical에서 정의가 됐어요.
구성 요소를 불러올 때 사용할 고리를 표시하기 위해서
useRouter의 방법 내 가장 바깥쪽 정의로 수정해야 합니다
import { NextRouter, Router, useRouter } from 'next/router';
import { uuid } from 'uuidv4';
const createNewArticle = (router: NextRouter) => {
router.push({
pathname: '/articles/[uuid]/edit',
query: { uuid: uuid() },
});
};
const Hogehoge = () => {
const router = useRouter();
return (
<>
...省略
<button
type="button"
onClick={() => createNewNote(router)}
>
投稿
</button>
</>
);
};
참고 자료
Next.js에서 URL을 관리하고 제어하는 방법 (next/link와next/router)
React Hooks의 규칙을 잘 모르면 오류 처리법에 빠질 수 있어요.
next/link
next/router
Reference
이 문제에 관하여([Next.js]uid에서 페이지를 동적으로 생성하려면 다음과 같이 하십시오.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/tsucchiiinoko/articles/2b0433434485d5텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)