开发者问题收集

如何在 React 中通过 Typescript 使用 Sigma.js

2020-03-15
2438

我正在尝试使用 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 containing declare 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 协同工作?

1个回答

您没有导入要使用的内容

/// <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';

如果这不起作用,请尝试同时安装 sigmareact-sigma ,因为 ploty.js 需要同时安装 ploty.jsreact-ploty.js ,我猜你可能会遇到类似的情况。


更新 3

似乎 react-sigma 不支持 typescript ,而是支持 flow-type

编辑 elegant-banzai-22gbb

参考: react-sigma 文档

keikai
2020-03-15