我有一个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函数。
答案 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>
);
}
}