javascript - props 作为字符串而不是对象返回

标签 javascript reactjs next.js

我目前正在我的网站上实现用户身份验证,如果用户已登录,我正在尝试限制对登录和注册页面的访问。为此,我正在实现 getServerSideProps如果用户已登录,则重定向用户:

export async function getServerSideProps(context) {
  if (context.req.cookies.user) {
    return {
      redirect: {
        destination: '/',
        permanent: true,
      },
    }
  }
  return {}
}
如果我返回一个空对象( {} ),接下来会给我这个错误:
Reason: Props must be returned as a plain object from getServerSideProps: `{ props: { ... } }` (received: `[object Array]`).
如果不是返回 {} , 我回来
{
  props: {}
}
该代码工作正常。有谁知道为什么会这样?
我正在使用自定义 _app.jsx文件。
在文档中,明确提到 props 参数是可选的:Documentation

最佳答案

这实际上是有意的。如果您使用的是 TypeScript,return {}会抛出你的错误 GetServerSidePropsResult定义如下 here :

export type GetServerSidePropsResult<P> =
  | { props: P | Promise<P> }
  | { redirect: Redirect }
  | { notFound: true }
这意味着 props 中的任何一个, redirect , notFound需要存在于返回的对象中。也许您可以在他们的 GitHub 上创建问题。 (也许是 PR)来修复文档。

关于javascript - props 作为字符串而不是对象返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70823052/

相关文章:

javascript - 尝试重新创建 JSON 数组,但它返回相同的第一个元素

javascript - D3 circle pack - 向节点添加标签

java - React-Native Android 构建失败 - 无法找到请求目标的有效认证路径

next.js - 您如何在 Vercel 上的 Next JS 中提供静态站点(例如来自 Webflow 或登录页面生成器)?

javascript - 无法使用 next images 包在 nextjs 中导入图像

php - PHP session 的 JavaScript 重定向问题

javascript - $emit 在 angularjs 中将数据从一个 Controller 发送到另一个 Controller 时不起作用

javascript - 子组件不会更改 prop

javascript - setState 没有设置状态变量 React

authentication - NextAuth 身份验证不适用于 Vercel 上的部署(在本地主机上工作)