react图不可见

IT技术 reactjs redux
2021-04-30 10:23:37

按照 projectstorm/react-diagrams docs 中的安装指南,我无法正确渲染图表。检查页面会显示节点的位置 - 但它们是不可见的。使用 sass,我已经导入到 app.scss @import "~storm-react-diagrams/src/sass/main"; 我也尝试使用原始缩小的 css,但没有任何改进。

我仍然认为这是我的错误,可能是我在错误的地方创建了引擎?我有一个 engineReducer 来提供默认引擎。

import * as SRD from "storm-react-diagrams";

//1) setup the diagram engine
var engine = new SRD.DiagramEngine();
engine.installDefaultFactories();

//2) setup the diagram model
var model = new SRD.DiagramModel();

//3-A) create a default node
var node1 = new SRD.DefaultNodeModel("Node 1", "rgb(0,192,255)");
let port1 = node1.addOutPort("Out");
node1.setPosition(100, 100);

//3-B) create another default node
var node2 = new SRD.DefaultNodeModel("Node 2", "rgb(192,255,0)");
let port2 = node2.addInPort("In");
node2.setPosition(400, 100);

// link the ports
let link1 = port1.link(port2);
link1.addLabel("Hello World!");

//4) add the models to the root graph
model.addAll(node1, node2, link1);

//5) load model into engine
engine.setDiagramModel(model);

const initialEngine = engine;

export default function (state = engine, action) {        
    return state;
}

然后,我的主要组件如下所示:

import React, { Component } from 'react';
import ReactDOM from 'react-dom';
import * as SRD from "storm-react-diagrams"
import {connect} from 'react-redux';

class Main extends Component {

    render() {
        console.log(this.props.engine); // Looks good!        
        return (
            <div className="app">               
                <SRD.DiagramWidget className="srd-demo-canvas" diagramEngine={this.props.engine} />
            </div>
        );
    }
}

function mapStateToProps(state) {
    return { engine: state.engine };
  }

export default connect(mapStateToProps)(Main)

老实说,我不明白文档参考

在您的库代码中

也就是说,我应该在哪里初始化引擎?我还缺少什么?

4个回答

您需要为小部件设置明确的高度。就像是:

.srd-demo-canvas {
    height: 100vh;
}
.srd-demo-canvas {
    height: 100vh;
    background-color: rgb(60,60,60)
}

除了高度之外,设置背景颜色帮助我看到 Chrome 默认给我的白色背景的链接。

如果您想要演示显示的网格,请安装 sass 并:

.srd-demo-canvas{
  height: 100%;
  min-height: 300px;
  background-color: rgb(60,60,60) !important;
  $color: rgba(white, .05);
  background-image:
    linear-gradient(0deg,
      transparent 24%,
      $color 25%,
      $color 26%,
      transparent 27%,
      transparent 74%,
      $color 75%,
      $color 76%,
      transparent 77%,
      transparent),
    linear-gradient(90deg,
      transparent 24%,
      $color 25%,
      $color 26%,
      transparent 27%,
      transparent 74%,
      $color 75%,
      $color 76%,
      transparent 77%,
      transparent);
  background-size:50px 50px;

  .pointui{
    fill: rgba(white,0.5);
  }

}

我尝试遵循建议的修复程序,但没有任何效果。

这是真正解决节点和元素未正确显示的问题的方法。

我删除了导入 the storm-react-diagrams/dist/style.min.css

相反,我创建了一个自定义 CSS 文件,该文件是上述文件,并进行了以下修改(您可以在"node_modules/storm-react-diagrams/dist/" style.min.css下找到它):

.srd-diagram{position:unset;flex-grow:1;display:flex;cursor:move;overflow:visible}

(要取消设置并溢出到可见的位置)

.srd-link-layer{position:unset; ...}

(要取消设置的位置)

一般来说,包装元素(例如 div)应该具有这些 css 属性。

display:grid;
height: 100vh;
min-height: 100%;
width: 100vw;