Next.js, getStaticProps 和 getStaticPaths |生产中出现“意外错误”

时间:2021-06-29 20:57:53

标签: reactjs typescript next.js

我用带有打字稿的 next.js 制作了一个 Facebook 克隆(用于前端)。

所以,问题在于,无论何时我想访问 perfil,我都会使用 getStaticPaths 和 getStaticProps,因为我想根据用户的 id 获取数据。

一开始,一切都很酷,但是,如果我打开了两个窗口,那么在第一个窗口中,假设我使用我的帐户登录,然后在第二个窗口中创建一个新的 perfil,在第一个窗口中尝试转到新的 perfil,这是错误

enter image description here

在请求中,出现 undefined 而不是用户的 id,这是为什么?

这是路线的样子以及我获取数据的方式

perfil/[id]

const Perfil = ({ data: urlIdData, allPubs }) => {

  const { data } = useSWR<user>(`${URL}/api/user/singleU/${router}`, {
    initialData: urlIdData
  });

  const { data: Publications } = useSWR<Ipublication[]>(
    `${URL}/api/publication`,
    {
      initialData: allPubs,
      revalidateOnFocus: false
    }
  );

return ()

export const getStaticPaths: GetStaticPaths = async () => {
  const { data }: multipleUsers = await Axios.get(
    `${process.env.URL}/api/user`
  );

  const paths = data.map(path => {
    return { params: { id: path._id } };
  });

  return { paths, fallback: true };
};

export const getStaticProps: GetStaticProps = async ({ params }) => {
  const { data }: IuserData = await Axios.get(
    `${process.env.URL}/api/user/singleU/${params.id}`
  );

  const { data: allPubs } = await Axios.get(
    `${process.env.URL}/api/publication`
  );

  return {
    props: { data, allPubs },
    revalidate: 3
  };
};

export default Perfil;

就像 getStaticPaths 有一个缓存,并且它不及时更新,所以这就是为什么当我尝试转到新用户的页面时,对 API 的调用无法执行,因为那个新的 id 是不在那里。

或者也许是后备?我应该把回退到阻塞,还是什么?

我对 next.js 有点陌生,所以,如果你能帮我解决这个问题,那就太棒了,因为这是应用程序的一个大问题。

我该怎么做,这样当有新用户时,我可以毫无问题地转到那个 perfil?

0 个答案:

没有答案