React:如何通过vis.js edge的click事件访问组件功能?

时间:2018-08-01 22:11:42

标签: javascript reactjs vis.js react-graph-vis

我有一个React组件,例如:

export default class App extends Component {
  // ...

  _openDialog = () => {
    this.setState({ isDialogOpen: true });
  };

  render() {
    return (
      <div>
        <div className="tree_graph_div">
          <Graph
            graph={graph}
            events={{
              selectEdge: function(event) {
                var { nodes, edges } = event;
                if (edges.length == 1) {
                  //I want to access _openDialog here with edge id
                }
              }
            }}
          />
        </div>
        <div>
          <Dialog />
        </div>
      </div>
    );
  }
}

该图是使用react-graph-vis创建的。

我要处理selectEdge事件:打开该edge_id的对话框。

该事件具有边缘ID,但是如何访问函数_openDialog?

我尝试过,但这是Graph对象,而不是App。

谢谢


我尝试使用箭头功能将Graph更改为此:

<Graph graph={graph}
  events={{
    selectEdge: (event) => {
      debugger;
    }
  }}
/>

但是在调试器点停止时,“ this”不具有_openDialog函数。

1 个答案:

答案 0 :(得分:3)

您可以将赋予selectEdge的函数更改为箭头函数,以使用封闭的词法范围,该范围在_openDialog上具有this

export default class App extends Component {
  // ...

  render() {
    return (
      <div>
        <div className="tree_graph_div">
          <Graph
            graph={graph}
            events={{
              selectEdge: (event) => {
                var { nodes, edges } = event;
                if (edges.length == 1) {
                  this._openDialog(edges);
                }
              }
            }}
          />
        </div>
        <div>
          <Dialog />
        </div>
      </div>
    );
  }
}