Как очищать getstaticprops по запросу с сервера в next.js?

Пользователь

от landen.nienow , в категории: JavaScript , год назад

Как очищать getstaticprops по запросу с сервера в next.js?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

1 ответ

Пользователь

от caterina , год назад

@landen.nienow 

В Next.js функция getStaticProps используется для предварительной загрузки данных, необходимых для отображения страницы при использовании статической генерации (SSG).


Если вам нужно очистить getStaticProps по запросу с сервера, вы можете использовать параметры маршрута (query params) для определения данных, которые должны быть предварительно загружены.


Например, вы можете определить параметр маршрута в файле страницы, например pages/posts/[id].js:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
import { useRouter } from 'next/router'
import { getPostData } from '../../../lib/posts'

export default function Post({ postData }) {
  const router = useRouter()

  if (router.isFallback) {
    return <div>Loading...</div>
  }

  return (
    <div>
      <h1>{postData.title}</h1>
      <div dangerouslySetInnerHTML={{ __html: postData.contentHtml }} />
    </div>
  )
}

export async function getStaticPaths() {
  const paths = getAllPostIds()
  return {
    paths,
    fallback: true
  }
}

export async function getStaticProps({ params }) {
  const postData = await getPostData(params.id)
  return {
    props: {
      postData
    }
  }
}


Затем, вы можете использовать параметры маршрута, чтобы определить, какие данные необходимо предварительно загрузить в функции getStaticProps. Например, если вы хотите загрузить данные для сообщения с определенным идентификатором, вы можете сделать следующее:

1
2
3
4
5
6
7
8
export async function getStaticProps({ params }) {
  const postData = await getPostData(params.id)
  return {
    props: {
      postData
    }
  }
}


В этом примере params.id содержит значение идентификатора сообщения из параметров маршрута. Затем, вы можете использовать это значение для загрузки соответствующих данных.


Если вы хотите очистить getStaticProps по другим параметрам запроса, например, по параметру поиска, вы можете использовать тот же подход и извлекать параметры из объекта context в функции getStaticProps. Например:

1
2
3
4
5
6
7
8
9
export async function getStaticProps({ context }) {
  const searchQuery = context.query.search
  const searchData = await searchPosts(searchQuery)
  return {
    props: {
      searchData
    }
  }
}


В этом примере мы извлекаем параметр search из объекта context.query и используем его для загрузки соответствующих данных.