动态导入未知组件 - NextJs

2023-12-09

我想根据路线动态加载组件。我正在尝试制作一个可以加载任何单个组件以进行测试的页面。

然而每当我尝试做import(path)它显示加载程序但从未实际加载。如果我硬编码完全相同的字符串path包含然后它工作正常。是什么赋予了?如何让nextjs真正动态导入动态导入?

// pages/test/[...component].js

const Test = () => {
  const router = useRouter();
  const { component } = router.query;
  const path = `../../components/${component.join('/')}`;

  console.log(path === '../../components/common/CircularLoader'); // prints true

  // This fails to load, despite path being identical to hard coded import
  const DynamicComponent = dynamic(() => import(path), {
    ssr: false,
    loading: () => <p>Loading...</p>,
  });

  // This seems to work
  const DynamicExample = dynamic(() => import('../../components/Example'), {
    ssr: false,
    loading: () => <p>Loading...</p>,
  });

  return (
    <Fragment>
      <h1>Testing {path}</h1>
      <div id="dynamic-component">
        <DynamicComponent />      <!-- this always shows "Loading..." -->
        <DynamicExample /> <!-- this loads fine. -->
      </div>
    </Fragment>
  );
};

export default Test;

I put dynamic在组件之外,并且工作正常。

const getDynamicComponent = (c) => dynamic(() => import(`../components/${c}`), {
  ssr: false,
  loading: () => <p>Loading...</p>,
});

const Test = () => {
  const router = useRouter();
  const { component } = router.query;
  
  const DynamicComponent = getDynamicComponent(component);

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

动态导入未知组件 - NextJs 的相关文章

随机推荐

  • 删除与小于指定大小的组对应的行

    我有一个DataFrame共 100 个答案questions id and 50 user id的 每行代表特定用户的一个问题 桌子看起来像这样 user id question id timetaken answer 1 answer
  • VB Gridview 选择错误的行进行编辑

    您好 我有一个搜索框 当我搜索记录时 记录会显示出来 但是一旦我单击网格视图上的编辑 页面就会进行回发 并且所有记录都会显示备份 并选择第一条记录进行编辑 如何禁用此回发或使其在单击 编辑所有记录 时不再显示 VB CodeBehind P
  • 如果属性数量大于n,则返回Neo4j中的路径

    所以我有一个如下所示的图形数据库 唯一真正有趣的是SomeProperty可以是 是 或 否 在顶行中 3 个节点中有 1 个此属性为 是 在底行 所有 3 个节点的该属性均为 是 如何通过提出以下问题来编写仅返回底行的 Cypher 查询
  • 更改 JavaScript 对象内的对象属性值会影响其他对象

    我想更改对象内部对象的属性 但是 当我这样做时 使用相同原型创建的其他对象属性也发生了变化 代码如下 var a x y foo var b Object create a var c Object create a console log
  • 返回排序数组中每个数字的最后一次相遇的函数

    我编写了一个函数 返回从 0 到 9 的每个数字的第一次相遇 array 0 0 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 def lower a val left right if left right re
  • 关闭模态 ViewController 会在 iphone 周围移动主视图按钮

    我在用着presentModalViewController and dismissModalViewController动画设置为YES在这两种情况下 这很好用 模态视图关闭后 主视图上的所有内容都向下移动了 20 像素 有人知道为什么会
  • 使用 mod_rewrite 将 .html 重写为 .php

    我有一个重写条件和规则 RewriteCond DOCUMENT ROOT 0 f RewriteRule index php L 我需要更换 html with php in DOCUMENT ROOT 0 原因是 我正在重写我的网址 h
  • 如何解决布局中更多数字的 Editext 问题并从中获取值?

    看这张图 我正在android中设计一个数独 已经完成了这样的布局 所以81 Editext就在那里 我想获取 Editext 中的所有值 因此很难在活动中声明和管理 81 个视图 您能建议我一种有效处理我的问题的方法吗 动态创建编辑文本
  • 如何使用 JAXB 忽略绑定到 XML 的字段

    我有一个简单的课程 如下所示 import nl hu pf coproco model Observeable XmlRootElement name Purpose XmlAccessorType XmlAccessType FIELD
  • Windows 上安装 Network-2.4.2.2 错误

    当尝试在 Cabal 沙箱 1 18 内的 Windows Server 2008 上安装网络包 cabal 安装网络 时 出现以下错误 C Users user Project gt cabal install network prefi
  • 输出自定义数据类型列表的内容

    我有一个自定义数据类型Movie String Int String Int 电影名称年份 粉丝 评分 并想做几件事 首先 我想创建一个函数 对元组列表中的整数进行平均并仅输出该数字 到目前为止我有这个不完整的功能 avgRating Da
  • Git 中“添加到索引”的真正含义是什么?

    我有一个关于 Git 基础知识的问题 基本上 Git 中 添加到索引 的操作是什么意思 我是这样理解的 如果 git 对任何文件计算 SHA 1 总和 那么基本上添加到索引意味着它计算 SHA 1 总和并将文件添加到暂存区域 我对么 一个有
  • 更新了重新验证用户身份的方法

    我一直在寻找Firebase 文档并找到了重新验证用户身份的方法 如下所示 let user Auth auth currentUser var credential AuthCredential Prompt the user to re
  • 如何清除 stringio 对象?

    我创建了一个 stringio 对象 里面有一些文本 我想清除它的现有值并重用它而不是召回它 有办法这样做吗 TL DR 不用费心清除它 只需创建一个新的 这样更快 方法 Python 2 以下是我如何发现这些事情的方法 gt gt gt
  • 类似vlookup的功能:为什么我的indexOf不起作用?

    如果我想匹配这个词 我需要找到它与
  • 如何在WampServer中配置CakePHP的.htaccess文件?

    我对在 CakePHP 中运行我的示例必须做什么感到非常困惑 我正在使用 WAMP 服务器 它位于 C program files wamp 中 我为我的项目使用另一个分区 E Projects 有一个用于学习 CakePHP 的文件夹 E
  • PHP 使用 array_search 查找数组中某个单词的第二次出现

    下面的代码将分割一个句子并告诉我单词 orange 的第一次出现 您能告诉我是否可以使用 php 库函数找到单词 orange 的第二次出现吗 我可以通过使用来做到这一点for loop 只是想知道是否array search库函数可以做到
  • Bootstrap 弹出窗口中的 HTML 标签不会呈现

    我遇到了一个问题 我无法弄清楚为什么弹出窗口内的 HTML 标签不会被渲染 JS在这里摆弄 http jsfiddle net 792xcgju a href class btn btn primary Popover Example a
  • Python Pandas 如果不在值范围内则替换值

    如果每个值不在特定值范围内 我想替换列中的所有单元格 例如 值范围在 0 到 10 之间 该函数应将 np NaN 放在所有低于 0 或高于 10 的单元格上 我尝试过这个 df loc df B lt 5 B np NaN 但它仅适用于特
  • 动态导入未知组件 - NextJs

    我想根据路线动态加载组件 我正在尝试制作一个可以加载任何单个组件以进行测试的页面 然而每当我尝试做import path 它显示加载程序但从未实际加载 如果我硬编码完全相同的字符串path包含然后它工作正常 是什么赋予了 如何让nextjs