react-digraph icon indicating copy to clipboard operation
react-digraph copied to clipboard

Potential issue with layoutEngineType

Open dsebastian opened this issue 4 years ago • 3 comments

Hi, I was trying out react digraph with some streaming data. Upon investigating some performance issues, I stumbled upon the layoutEngineType property which is heavily used throughout the Graph View in order to check if nodes should be re-rendered. One of the methods that tells the component if it should forceUpdate is hasLayoutEngine https://github.com/uber/react-digraph/blob/master/src/components/graph-view.js#L294 https://github.com/uber/react-digraph/blob/master/src/components/graph-view.js#L331

Considering the type of this property is LayoutEngineType and that it is defaulted to LayoutEngineType.NONE, which in it's self is of value 'None', can anyone tell me when will this method return false as I'm probably missing some thing here? Isn't forceUpdate set to true always?

Thanks.

image

dsebastian avatar Jan 26 '21 16:01 dsebastian

This checks for the existence of the attribute. If you don't want to run it then don't add the layoutEngineType attribute to the <Graph>. Don't use "None" as the layoutEngineType, just remove the attribute altogether.

The forceRerender is kind of a hack, I know, but it fixed a rendering issue.

ajbogh avatar Jan 26 '21 18:01 ajbogh

Thanks for the reply @ajbogh . But as I was mentioning, the component sets is as a defaultProp here: https://github.com/uber/react-digraph/blob/master/src/components/graph-view.js#L80

dsebastian avatar Jan 26 '21 20:01 dsebastian

Hello, Indeed, there is "None" defaultProp, so just removing the attribute altogether will indeed set a layout engine. But passing layoutEngineType={null} wont.

I hope it helps

Djazouli avatar Mar 19 '21 22:03 Djazouli