How to use getStaticPaths in Next.js ?
Last Updated :
06 Apr, 2023
We can pre-render a page in Next.js all through the form interaction. We make all of the HTML code and information early. The server then, at that point, reserves the data.
This technique turns out extraordinary for static pathways; nonetheless, it bombs while delivering pages for dynamic ways. It's additionally legitimate. We should imagine there's a blog with a few articles on it. We characterized dynamic ways like [blogId].js in next.js. This way is substantial for blog ids 1, 2, 3, 4, etc, as we definitely know. Next.js has no technique for knowing the number of pages it is necessities to deliver.
We use getStaticPaths() to achieve this, further investigating in this blog.
Features of getStaticPath: Assuming a page utilizes getStaticProps and has Dynamic Routes, it should characterize a rundown of ways that will be statically created.
At the point when you send out the getStaticPaths (Static Site Generation) work from a page that utilizes dynamic courses, Next.js statically pre-delivers every one of the ways given by getStaticPaths.
- The information begins from a CMS that doesn't have ahead.
- The data is taken from information base.
- The information is taken from the filesystem.
- The information can be stored straightforwardly (not client explicit).
Syntax:
export async function getStaticPaths() {
return {
Paths: [
// See path selection below
{ params: { ...} }
],
// See the fallback section below
fallback: true, false, or blocking
};
}
Fallback: FalseÂ
Bogus, it will then, at that point, fabricate just the ways returned by getStaticPaths. This choice is valuable in the event that you have a few ways to make it, or new page information isn't added regularly. Assuming you observe that you really want to add more ways, and you have a backup plan: bogus, you should run the next form again so the new ways can be created.
Fallback: TrueÂ
For the rest. At the point when somebody demands a page that isn't produced at this point, the client will see the page with a stacking pointer or skeleton part.Â
Fallback: blocking
Fallback is 'blocking', new ways not returned by getStaticPaths will trust that the HTML will be produced, indistinguishable from SSR (henceforth why obstructing), and afterward be stored for future demands so it just happens once per way.
Example 1:
JavaScript
work Post({ post }) {
// Render post...
}
// This capacity gets called at fabricate time
trade async work getStaticPaths() {
// Call an outside API endpoint to get posts
const res = anticipate fetch('https://.../posts')
const posts = anticipate res.json()
// Get the ways we need to pre-render in light of posts
const ways = posts.map((post) => ({
params: { id: post.id },
}))
// We'll pre-render just these ways at assemble time.
return { ways, backup plan: bogus }
}
// This likewise gets called at construct time
trade async work getStaticProps({ params }) {
// params contains the post 'id'.
// On the off chance that the course
// resembles/posts/1, params.id is 1
const res = anticipate fetch('https://.../posts/${params.id}')
const post = anticipate res.json()
// Pass present information on the page through props
return { props: { post } }
}
Output:
Post1
Example 2:
JavaScript
import { useRouter } from 'next/switch'
work Post({ post }) {
const switch = useRouter()
// On the off chance that the page isn't
// yet produced, this will be shown at
// first until getStaticProps() gets
// done with running
if (router.isFallback) {
return <div>Loading...</div>
}
// Render post...
}
// This capacity gets called at assemble time
send out async work getStaticPaths() {
return {
// Just '/posts/1' and '/posts/2' are
// produced at assemble time
ways: [{ params: { id: '1' } }, { params: { id: '2' } }],
// Empower statically creating extra pages
// For instance: '/posts/3'
contingency plan: valid,
}
}
// This likewise gets called at assemble time
send out async work getStaticProps({ params }) {
// params contains the post 'id'. On the off chance that
// the course resembles/posts/1, params.id is 1
const res = anticipate fetch('https://.../posts/${params.id}')
const post = anticipate res.json()
// Pass present information on the page through props
return {
props: { post },
// Re-create the post all things considered
// one time each second
// assuming a solicitation comes in
revalidate: 1,
}
}
Output:
Render post
1 2 3
Similar Reads
How to find unused files in Next.js ? In this article, we will learn How we can find unused files in our NextJS project. NextJS is a React-based framework. It has the power to Develop beautiful Web applications for different platforms like Windows, Linux, and mac. The linking of dynamic paths helps in rendering your NextJS components co
3 min read
How to Catch All Routes in Next.js ? To catch all routes in Next.js, you create a dynamic route file using the catch-all segments syntax. This allows you to handle various routes dynamically, enhancing routing flexibility and application structure.Catch all routesTo catch all routes in next js, We willCreate a file named [...gfg].js in
2 min read
How to Use the App Directory in Next.js? The App Directory in Next.js provides a powerful way to structure and manage your application's pages and components. It simplifies the routing and organization of your project, enabling you to build complex web applications with ease.Understanding the App DirectoryThe App Directory is a new structu
3 min read
How to add ESLint in Next.js ? ESLint is a popular linting tool for identifying and fixing issues in JavaScript code. Adding ESLint to your Next.js project ensures that your code follows best practices and maintains a consistent style. This enhances code quality, helps catch errors early, and makes the codebase easier to maintain
3 min read
Next.js getStaticPaths() Function The getStaticPaths() function in NextJS is used to pre-generate static pages for dynamic routes.For example, we can create a page that has dynamic parameters like `user/[ID]` Â and then we can create a static version for every possible value of the dynamic parameter. In our case, if the dynamic param
3 min read