代码之家  ›  专栏  ›  技术社区  ›  Chance Smith

在ReactJS的VisJS网络图画布上添加多节点框选择器

  •  6
  • Chance Smith  · 技术社区  · 8 年前

    下面是在网络上绘制画布以选择多个节点的jQuery示例:

    这怎么能被翻译成反应呢?

    一、设置 react-graph-vis source )在这个沙盒中,并向图形添加了一个ref: https://codesandbox.io/s/5m2vv1yo04

    尝试

    • 在“”上使用React.createRef()将EventLisenter添加到图形/画布时遇到问题
    • 在画布上使用此方法时遇到问题: .getContext("2d")
    • 反应图 方法 mentioned here

    • 单击鼠标左键并拖动绘图框选择器
    • 在 mouseup ,在画布上绘制的框中选择节点,然后清除“绘制”

    也许我是走错了方向。

    2 回复  |  直到 8 年前
        1
  •  5
  •   David Champion    8 年前

    我使用了您共享的JSSampler示例将其组合在一起。

    解决方案

    您只需要使用ref来连接网络和画布。其他的都差不多到位了。 https://codesandbox.io/s/5m2vv1yo04

    清理建议

    • 将全局变量移到react类中
    • 将VisJS突出显示代码拆分为自己的文件
        2
  •  2
  •   lrcrb    8 年前

    http://visjs.org/docs/network ). react graph vis显示,可以通过向 getNetwork 支柱 Graph . 调用该回调时将引用底层网络对象,此时应将该参数分配给类属性,如Github问题中@Irecknagel所述。

    在执行包装组件的操作时,向图形组件添加ref。但是,它不一定提供对网络的引用,因为网络是由图组件构造的对象。

    关于添加事件侦听器,react graph vis演示源代码可能会有所帮助。他们将事件侦听器定义为一个对象,然后像这样将其作为一个道具传入。

    // in render or elsewhere depending on scoping needs
    const events = {
      select: function(event) {
        var { nodes, edges } = event;
        console.log("Selected nodes:");
        console.log(nodes);
        console.log("Selected edges:");
        console.log(edges);
      }
    };
    // return of render
    <Graph graph={graph} options={options} events={events} style={{ height: "640px" }} />
    

    .getContext("2d") 是。我不确定你定义的“最终目标”是否在你正在使用的包的范围内。