Nextjs getStaticProps 将对象作为 prop 而不是纯字符串传递时出错

2024-02-22

我希望你一切都好????。

在使用新的内部化 NextJS 功能时,我发现了一个我根本没有预料到的错误。

如果我传递一个纯字符串作为 prop 从getStaticProps to the Page Component一切正常default locale,但是如果我传递一个对象而不是一个普通字符串,它就会中断。

我把这两个代码都留在这里。

下面的代码可以正常工作????:

  • 它传递一个字符串值
  • 在两种语言环境中都可以正常工作/en and /es即使没有它(它选择默认区域设置)
import { useRouter } from "next/dist/client/router";

export async function getStaticPaths() {
  return {
    paths: [
      { params: { name: `victor`, locale: "es" } },
      { params: { name: `victor`, locale: "en" } },
    ],
    fallback: true,
  };
}

export async function getStaticProps(context) {
  const { params } = context;
  const { name } = params;

  return {
    props: {
      name,
    },
  };
}

/*
 * ✅ The following URLs work
 * - localhost:3000/victor
 * - localhost:3000/en/victor
 * - localhost:3000/es/victor
 *
 * TypeError: Cannot destructure property 'name' of 'person' as it is undefined.
 */
export default function PageComponent({ name }) {
  const router = useRouter();
  return (
    <>
      <div>The name is: {name}</div>
      <div>Locale used /{router.locale}/</div>
    </>
  );
}

下面的代码是不起作用的:

  • 它传递一个对象
  • 在“/en”中工作正常并且没有显式区域设置(默认区域设置),但不适用于/es
import { useRouter } from "next/dist/client/router";

export async function getStaticPaths() {
  return {
    paths: [
      { params: { name: `victor`, locale: "es" } },
      { params: { name: `victor`, locale: "en" } },
    ],
    fallback: true,
  };
}

export async function getStaticProps(context) {
  const { params } = context;
  const { name } = params;

  return {
    props: {
      person: {
        name,
      },
    },
  };
}

/*
 * ✅ The following URLs work
 * - localhost:3000/victor
 * - localhost:3000/en/victor
 *
 * ???? The following URLs DOESN'T work
 * - localhost:3000/es/victor
 *
 * TypeError: Cannot destructure property 'name' of 'person' as it is undefined.
 */
export default function PageComponent(props) {
  const router = useRouter();
  const { person } = props;
  const { name } = person;
  return (
    <>
      <div>The name is: {name}</div>
      <div>Locale used /{router.locale}/</div>
    </>
  );
}


这是因为你正在使用fallback: true.

页面在数据准备好之前渲染,需要使用router.isFallback标记来处理组件内的这种情况:

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

或者你可以使用fallback: 'blocking'让 Next.js 在渲染页面之前等待数据。

文档中的更多信息 https://nextjs.org/docs/basic-features/data-fetching#the-fallback-key-required

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Nextjs getStaticProps 将对象作为 prop 而不是纯字符串传递时出错 的相关文章

  • 下一张图片不采用类属性

    我正在使用 Next js 和next image显示图像 但 CSS 在其中不起作用 该图像是 SVG 格式 我已将其放在公共文件夹中 我正在使用 Tailwind CSS 与此一起使用
  • 在 React Web 应用程序中使用 createjs-soundjs

    我想用https www npmjs com package createjs soundjs https www npmjs com package createjs soundjs在 React Web 应用程序上播放声音 我正常安装了
  • React Image:createObjectURL 链接给出错误 404(未找到)

    我在 React with Typescript 中使用以下代码创建了一个 ImageUrl 它创建了一个 URL 但不显示图片图像 单击 URL 例如 http localhost 3003 0b4de100 d8eb 49a7 b43a
  • css-loader 不导入 .css 文件返回空对象

    从 css 文件导入样式 返回空对象 看来 css loader 无法正常工作 谁可以帮我这个事 请找到下面的参考文件 index js import React from react import style from header cs
  • Jest - 模拟函数,从另一个文件导入

    测试的文件使用从另一个文件导入的函数 import myFunc from myFile 如何在该文件的测试中模拟该函数的返回值 我正在使用笑话 这对我有用 我不确定这是否是一个好的做法 import as myFile from myFi
  • 如何在react-三纤维中提取并播放动画

    嗯 我有 gltf 动画模型 我成功加载模型 但无法播放嵌入的动画 我想知道是否可以以任何方式解决它 顺便说一句 我正在反应中工作 先感谢您 在这里您可以找到型号https drive google com file d 1ZVyklaQu
  • React 应用程序中未调用 Microsoft Graph Toolkit 组件的事件处理程序

    我正在尝试在我的 React 应用程序中使用 Microsoft Graph Toolkit 中的登录组件 它工作得很好 但我似乎无法让任何事件发生 例如 import React from react import MgtLogin Pr
  • NextjS src 和默认外部图像 URL 的图像问题

    我正在使用最新版本的 NextJS 10 0 9 我有一个想要显示的图像 但是收到错误 Error Image with src https picsum photos 480 270 must use width and height p
  • 即使未显式使用“componentWillMount”,“componentWillMount”警告仍可见

    在我的代码中 我没有任何明确的用途componentWillMount 但我在运行时仍然看到一些警告webpack react dom development js 12386 警告 componentWillMount 已重命名 不建议使
  • 为什么我的反应路由器链接将我带到页面中间?

    我的网站上有很多链接 但只有一个可以执行此操作 它没有将我带到导航栏的顶部 而是转到内容的中间 知道为什么会这样吗 这是一个页面 其中有一个 map经历一些JSON 这是渲染div页面下方的文本元素 如果重要的话 这是一些可能相关的代码 路
  • axios 请求中未发送正文数据

    我试图通过 axios 请求将数据发送到我的后端脚本 但正文看起来是空的 这是前端发送的请求 axios request method GET url http localhost 4444 next api headers Authori
  • 使用 Jest 和 React JS TestUtils 测试表单

    我有一个带有 3 个单选按钮的表单 如下所示 假名
  • React JS 服务器端问题 - 找不到窗口

    你好 我正在尝试在我的reactJS项目中使用react rte 我有服务器端渲染 每次我想使用这个包时 我都会得到 return msie 6 9 b test window navigator userAgent toLowerCase
  • webpack中动态加载外部模块失败

    我正在尝试建立以下架构 一个核心 React 应用程序 它具有一些基本功能 并且能够在运行时加载其他 React 组件 这些额外的 React 组件可以按需加载 并且它们在构建核心应用程序时不可用 因此它们不能包含在核心应用程序的捆绑包中
  • 使用 ref 触发反应 dropzone 不起作用

    我正在实现这个库 https github com felixrieseberg React Dropzone Component https github com felixrieseberg React Dropzone Compone
  • 使用 Reactjs 获取滚动位置

    我使用reactjs并想要处理滚动click event 首先 我呈现了帖子列表componentDidMount 其次 通过click event在列表中的每个帖子上 它将显示帖子详细信息并滚动到顶部 因为我将帖子详细信息放在页面的顶部位
  • 使用 React.js + Express.js 发送电子邮件

    我在 ES6 中使用 React js 构建了一个 Web 应用程序 我目前想要创建一个基本的 联系我们 页面并想要发送电子邮件 我是 React 新手 刚刚发现我实际上无法使用 React 本身发送电子邮件 我正在遵循教程nodemail
  • 在react-big-calendar中单击事件时添加弹出窗口?

    当单击事件时 我无法将弹出窗口添加到事件中 弹出窗口似乎只显示在事件槽中 而不是显示在事件槽的顶部 此外 由于我为事件创建了一个自定义组件并尝试在自定义组件中实现弹出窗口 因此只有当我单击事件名称时才会显示弹出窗口 这是代码 class C
  • React 在同一组件中渲染多个模态

    我对 React 和一般编码都很陌生 我试图在同一组件中渲染多个模态 但它们都是同时渲染的 因此看起来所有链接都在最后一个模态中渲染文本 这是状态设置的地方 class Header extends React Component cons
  • p5 向量减法“sub”返回错误

    我一直在尝试将 p5 草图上传到 React 构建中 使用react p5 wrapper 我能够成功在屏幕上渲染画布 但是 某些矢量函数会导致错误 var distance this position dist ball position

随机推荐

  • JBoss [类加载器管理器] 意外错误...无法访问超类?

    尝试部署到 JBoss 6 0 0 Final 容器并一直在与以下堆栈跟踪作斗争 也许有一个已知的解决方案 14 36 08 218 INFO AbstractJBossASServerBase Server Configuration J
  • QDockWidget导致qt崩溃

    我有 ubuntu 11 10 中内置的 Qt 版本 我正在尝试使用QDockWidget实际上无法停靠 基本上 我只想要一个浮动的窗口 我不想只使视图成为顶级视图 因为那样我就会将操作系统窗口栏放在那里 这是我不想要的 并且如果我隐藏它
  • 在封闭网络中安装powershell模块

    我有一个简单的问题 但我找不到任何答案 我正在使用 powershell 5 我在封闭环境中工作 无法连接到互联网 我想在我的机器上手动安装模块 基本上是任何可下载的模块 例如 posh ssh 能做到吗 可以说在这里保存模块并安装吗 由于
  • 使用 Join、Group By 和having 进行更新

    select 语句执行时没有错误或警告 更新语句抛出错误 关键字 group 附近的语法不正确 select sSVsys textUniqueWordCount count as actCount from docSVsys as sSV
  • 使用 -jdkinternals 时 jdeps 没有输出

    我正在尝试使用Java依赖分析工具 jdeps https wiki openjdk java net display JDK8 Java Dependency Analysis Tool 首先 我尝试在没有参数的情况下执行此操作 如下所示
  • Rails 3 的 Bundler“bundle install --deployment”到底是做什么的?

    正式文档中描述的东西有点复杂 它是否只是添加以下行 bundle config BUNDLE PATH vendor bundle 然后执行bundle install 就这样 安装后会将所有宝石安装到vendor bundle 然后当应用
  • 生成 EC Diffie-Hellman 公钥和私钥对

    我需要生成 EC Diffie Hellman 密钥对 我正在使用名为 curve 的 secp256r1 和 OpenSSL 到目前为止 这就是我所拥有的 unsigned char ecdh size t secret len EVP
  • 如何使用 .Net 读取 .cds 数据库 (TClientDataSet)

    我有一个来自用 Delphi 编写的应用程序的旧数据库文件 我的任务是提取数据并将其移至 SQL 数据库 我知道它是 cds 格式 它使用 Delphi 的 TClientDataSet Class 问题是 我没有 Delphi 没有文档
  • React-Redux 中“@@INIT”操作的目的是什么?

    只是注意到它始终是打开页面时调度的第一个操作 它是否用于使用减速器的默认状态来初始化存储 我想这会回答你的问题 When a store is created an INIT action is dispatched so that eve
  • Java 正则表达式:分割逗号分隔值但忽略引号中的逗号

    我的文字如下 text 1 more more text 3 谁能告诉我必须使用哪些正则表达式分隔符才能获得以下内容 text 1 more more text 3 我正在阅读 Sun 教程here http docs oracle com
  • 使用新标签微调模型的分类器层

    我想使用仅包含 1 个模型之前未见过的附加标签的新数据集来微调已经微调的 BertForSequenceClassification 模型 这样 我想向模型当前能够正确分类的标签集添加 1 个新标签 此外 我不希望随机初始化分类器权重 我想
  • php对对象的属性进行排序

    我想对对象的属性进行排序 以便可以按定义的顺序循环遍历它们 例如 我有一个对象 book 具有以下属性 id title author date 现在我想像这样循环访问这些属性 foreach book as prop gt val do
  • 将字符串严格格式化为大写字母,然后将数字分成两半[重复]

    这个问题在这里已经有答案了 我有几个格式的字符串 AA11 AAAAAA1111111 AA1111111 我需要分离字符串的字母和数字部分 如果它们都是一系列字母 后跟一系列数字 没有非字母数字字符 那么sscanf http www p
  • 在 while 循环中使用文本作为条件

    我在使用文本作为 while 循环的条件时遇到一些问题 目前的基本编码是 result struct val yes while result val yes result val input more digits end 正如您所看到的
  • Canvas 中同一动画 GIF 的多个实例 (Java)

    所以我正在制作一款游戏 你可以在角色的位置放置炸弹 当炸弹显示并最终爆炸时 每个炸弹都与一个 GIF 图像相关联 想想炸弹人 问题是 当我尝试在屏幕上绘制多个炸弹时 它是从 GIF 的最后一帧绘制的 经过调查 我找到了 image flus
  • CSS DOM 遍历优于 JavaScript DOM 遍历?

    JavaScript and CSS两者在遍历 HTML 元素时都使用自己的 DOM 树 In JavaScript 我们可以使用它自己的DOM遍历方法比如 element parentNode element nextSibling 然而
  • 是否可以将 JavaScript 变量保存为文件? [复制]

    这个问题在这里已经有答案了 有没有办法将 JavaScript 变量中的字符串转换为用户可以在单击按钮时下载的可下载文件 感谢您的任何建议 div Lorem Ipsum div br
  • 如何在 C# 中动态添加字段到类中

    有什么办法可以添加Field or FieldInfo 也许这与运行时的类是一样的 您无法在运行时更改类定义 但是 您可以创建一个继承自原始类的新类 如果它不是sealed 并声明该字段 您可以通过使用发出适当的 IL 代码来做到这一点Sy
  • 有没有办法使用 glom 库将字典列表合并为单个字典? [复制]

    这个问题在这里已经有答案了 我在用着glom https github com mahmoud glom项目 有没有办法转换 id 1 name foo id 2 name bar to 1 foo 2 bar New glom版本 19
  • Nextjs getStaticProps 将对象作为 prop 而不是纯字符串传递时出错

    我希望你一切都好 在使用新的内部化 NextJS 功能时 我发现了一个我根本没有预料到的错误 如果我传递一个纯字符串作为 prop 从getStaticProps to the Page Component一切正常default local