javascript - React.js 和 D3,向强制有向图添加箭头

标签 javascript reactjs d3.js d3-force-directed

我正在密切关注将 D3 与 React 结合起来的方法 here .

通过这种模式,结构和渲染由 React 完成,计算由 d3 处理。

var links = _.map(this.props.links, (link) => {
  return (
    <line className='link' key={link.key} strokeWidth={link.size}
      x1={link.source.x} x2={link.target.x} y1={link.source.y} y2={link.target.y} />
  );
});

此代码段用于绘制两个节点之间的边(链接)。我是 d3 的新手,所以我想知道如何添加一个箭头来指示两个节点之间的源->目标关系?该箭头应该位于目标节点旁边。

最佳答案

使用http://bl.ocks.org/fancellu/2c782394602a93921faff74e594d1bb1举个例子

render() {
    // use React to draw all the nodes, d3 calculates the x and y
    var nodes = _.map(this.props.nodes, (node) => {
      var transform = 'translate(' + node.x + ',' + node.y + ')';
      return (
        <g className='node' key={node.key} transform={transform}>
          <circle r={node.size} />
          <text x={node.size + 5} dy='.35em'>{node.key}</text>
        </g>
      );
    });
    var links = _.map(this.props.links, (link) => {
      return (
        <line className='link' marker-end="url(#arrowhead)" key={link.key} strokeWidth={link.size}
          x1={link.source.x} x2={link.target.x} y1={link.source.y} y2={link.target.y} />
      );
    });

    return (
      <svg width={width} height={height}>
        <defs>
          <marker id="arrowhead" viewBox="-0 -5 10 10" refX="13" refY="0" orient="auto" markerWidth="13" markerHeight="13" xoverflow="visible">
            <path d="M 0,-5 L 10 ,0 L 0,5" fill="#999" style="stroke: none;"></path>
          </marker>
        </defs>
        <g>
          {links}
          {nodes}
        </g>
      </svg>
    );
  }

关于javascript - React.js 和 D3,向强制有向图添加箭头,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51644896/

相关文章:

javascript - ReactJs 中的替代 prev 函数是什么?

javascript - 与缓存SVG数据相比,从磁盘读取SVG图标文件?

javascript - 包含聊天的 div,关注最后一个条目

javascript - 如何正确存储 javascript 模板,使其不会被多次实例化

reactjs - 如何使用钩子(Hook)从我的 React 应用程序更新 Auth0 锁定 Logo

html - 有一个 iframe 标签覆盖整个页面,阻止与应用程序交互

javascript - d3 selection.attributes.key.nodevalue 不返回当前的 DOM 值

javascript - 操作 HTML 中的路径元素

javascript - Laravel Ajax 请求,Auth :login returns false! 但用户在刷新后登录

javascript - 单击按钮时将文本从文本区域附加到 div