【发布时间】:2020-11-06 17:25:56
【问题描述】:
首先,我查看了react-d3-tree github 上的问题编号40 和95 我在 StackOverflow 上看不到任何对我有帮助的东西。我正在尝试实现 parseJSON 方法,这样我就可以从项目文件夹中获取自己的 JSON 文件,然后生成树形图。
让我们从我一开始所做的开始。我复制粘贴了在崩溃前工作了 2 秒的示例代码。原因?服务器端渲染。太好了,所以我找到了this from NextJS,它允许我禁用某些组件的 SSR。嘿,现在示例代码正在运行。让我们试试example code where they use external data!不,它找不到 parseJSON 方法。我不知道该怎么办,找不到任何东西来解决这个问题。我正在尝试导入这个与 SSR 有问题的函数,但因为它不是一个组件,所以我无法使用动态导入它,而且我无法正常导入,因为它会导致“未定义窗口”错误因为SSR。 以下是我主要的两个文件。
DynamicComponent.js [版本 1]
import dynamic from 'next/dynamic';
const Tree = dynamic(
() => import('react-d3-tree'),
{ ssr: false },
);
export default Tree;
DynamicComponent.js [版本 2]
import dynamic from 'next/dynamic';
export const Tree = dynamic(
() => import('react-d3-tree'),
{ ssr: false },
);
export const treeUtil = dynamic(
() => import('react-d3-tree/src/util'),
{ ssr: false },
);
图表/index.js
import React from 'react';
import { Tree, treeUtil } from '../DynamicComponent';
const myTreeData = require('../fakeData.json');
class Diagram extends React.PureComponent {
constructor() {
super();
this.state = {
data: undefined,
};
}
componentWillMount() {
treeUtil.parseJSON(myTreeData)
.then((data) => {
this.setState({ data });
});
}
render() {
return (
<div
id="treeWrapper"
style={{ width: '50em', height: '20em' }}
>
<Tree data={this.state.data} />
</div>
);
}
}
export default Diagram;
我在第 1 版中遇到的错误
ReferenceError: treeUtil is not defined
我在第 2 版中遇到的错误
TypeError: _DynamicComponent__WEBPACK_IMPORTED_MODULE_1__.treeUtil.parseJSON is not a function
请 StackOverflow,你是我唯一的希望。
【问题讨论】:
标签: reactjs next.js server-side-rendering react-d3