javascript - Next.js:如何将仅外部客户端的 React 组件动态导入到开发的服务器端渲染应用程序中?
问题描述
我知道这个问题之前已经被问过多次,但似乎没有一个解决方案有效。
我正在尝试使用仅在 SSR 应用程序的客户端呈现的库“react-chat-popup”。(使用 next.js 框架构建)使用此库的正常方法是调用import {Chat} from 'react-chat-popup'
然后直接将其呈现为<Chat/>
.
我为 SSR 应用程序找到的解决方案是在动态导入库之前检查typedef of window !=== 'undefined'
方法中componentDidMount
是否正常单独导入库已经导致window is not defined
错误。所以我找到了链接https://github.com/zeit/next.js/issues/2940,它建议以下内容:
Chat = dynamic(import('react-chat-popup').then(m => {
const {Foo} = m;
Foo.__webpackChunkName = m.__webpackChunkName;
return Foo;
}));
但是,当我这样做时,我的 foo 对象变为空。当我在回调中打印出 m 对象时,我得到{"__webpackChunkName":"react_chat_popup_6445a148970fe64a2d707d15c41abb03"}
如何正确导入库并<Chat/>
在这种情况下开始使用元素?
解决方案
Next js 现在有自己的方式进行动态导入,无需 SSR。
import dynamic from 'next/dynamic'
const DynamicComponentWithNoSSR = dynamic(
() => import('../components/hello3'),
{ ssr: false }
)
这是他们文档的链接:next js
推荐阅读
- c# - 启用 MSI 时连接到 SQL
- django-models - 虽然从日期开始到日期,日期之间的所有文件都应该在 django 中列出
- compilation - 跳转标签分析和生成是什么编译器技术?
- java - 为什么我不能使用我的代码从 excel 中获取值到列表中?
- python - 两个 3d 点之间的 Mayavi 弯曲箭头
- python - 如何确保正确配置 anaconda 环境以导入包
- javascript - 安装电子与安装电子生成器
- vue.js - 如何从 element-ui 中删除工具提示组件中的淡出过渡?
- java - 按钮单击事件在netbeans java中不起作用
- r - 是否可以在闪亮的应用程序(renderGrViz)中选择一个 graphviz 节点,然后链接到其他信息?