如何在 React 中通过 Typescript 使用 Sigma.js
我正在尝试使用 React/TypeScript 建立一个简单的 Web 应用程序,以便我可以使用 Sigma.js 摆弄一些图表。但是我无法使用 Sigma 渲染任何内容。
这是我遵循的步骤:
$ npx create-react-app sigmafiddle --template typescript^C
$ cd sigmafiddle
$ yarn add sigma
$ yarn add @types/sigmajs
但是,当我导入 Sigma 时遇到以下问题:
import { sigma } from 'sigma'
失败并显示以下错误消息:
TypeScript error in ~/devel/sigmafiddle/src/App.tsx(4,23): Could not find a declaration file for module 'sigma'. '~/devel/sigmafiddle/node_modules/sigma/endpoint.js' implicitly has an 'any' type. Try
npm install @types/sigma
if it exists or add a new declaration (.d.ts) file containingdeclare module 'sigma';
TS7016 Not a real helpful message, since @types/sigma does not exist within npm.
如果我尝试这个:
import { sigma } from 'sigmajs'
我得到了这个失败:
TypeScript error in ~/devel/sigmafiddle/src/App.tsx(4,23): File '~/devel/sigmafiddle/node_modules/@types/sigmajs/index.d.ts' is not a module. TS2306
我也尝试过包
react-sigma
:
yarn add react-sigma
// in app.tsx
import {Sigma, RandomizeNodePositions, RelativeSize} from 'react-sigma';
不幸的是,没有
@types/react-sigma
包,因此导致以下结果错误:
Cannot find module 'react-sigma'
如何让 sigma.js 与 TypeScript 和 React 协同工作?
您没有导入要使用的内容
将
/// <reference types="@types/sigmajs" />
替换为
import { sigma } from 'sigma';
通常,如上导入是在 js/ts 项目中使用 lib 的常用方法。
更新
由于错误似乎是缺少库的类型定义,
File '~/devel/graph-grammar/node_modules/@types/sigmajs/index.d.ts' is not a module.
npm install --save @types/sigmajs
正常导入可能会有效。
import { sigma } from 'sigma';
请参阅 @types/sigmajs
更新 2
您可能需要 react-sigma npm 、 repo 在你的 React 项目中。
安装它,然后参考文档导入似乎没问题。
import {Sigma, RandomizeNodePositions, RelativeSize} from 'react-sigma';
如果这不起作用,请尝试同时安装
sigma
和
react-sigma
,因为
ploty.js
需要同时安装
ploty.js
和
react-ploty.js
,我猜你可能会遇到类似的情况。
更新 3
似乎
react-sigma
不支持
typescript
,而是支持
flow-type
。
参考: react-sigma 文档