Comments (7)
@uhessbai essentially you should try to keep your data
object memoized, i.e. its reference doesn't change from one render to the next. This is regardless of whether it belongs to the force graph component or its parent component. At the time that it is created it should not be regenerated at every render, unless needed.
from react-force-graph.
@uhessbai thanks for reaching out. It's more practical if you submit an online example on https://codesandbox.io/. However in your case most likely this is happening because you're not memoizing the functions that you're passing to the component, for instance:
nodeVal={node => 100 / (node.level * node.level + 1)}
Therefore at every rerender the component receives a new function and needs to recompute every node position and re-heat the layout.
Same thing might be true with your data
prop if it's a new reference each time (that part of the code is not present above).
from react-force-graph.
@vasturiano thanks for your reply ! I will come back in a few days at home, I will try that soon :)
from react-force-graph.
Ok so i tried some things, for nodeVal i can use a static value which works ! As adviced i also put the code on codesanbox (config is not on point tho) at this link
But for "data" its another kind of issue : my problem is that my app component hosts the drawer and the forcetree, and the info goes from one component to the other to help the highlight of nodes and i dont know if i there is a way to solve this issue, i tried by myself and with the help of ai but my knowledge of react seems not clear enough because even though i tried multiple things i was going around in circles
Could you bring more details about your clue on this issue ?
Also our answer greatly helped me to better understand how the layout works, thanks for that too !
from react-force-graph.
@vasturiano thank you very much ! I will try that soon, i'll post the solution there if it might help someone!
from react-force-graph.
Wow this thread was super helpful! I was struggling with an issue when highlighting linked nodes in a large graph where my fps would drop to 1 while hovering and it turned out these types to memoize the graphData
and now it runs super smoothly!
@vasturiano if interested I can put up a PR for a large-graph/highlighting/performance example
from react-force-graph.
@vasturiano it works perfectly! thanks for your help! I can post the code if someone needs it
from react-force-graph.
Related Issues (20)
- Any ideas how to implement curved connections as on screenshoot HOT 2
- appending nodes gives: Cannot create property 'vx' on string
- Performance issue when utilizing Parcel to build project.
- How to have coordinates of real positions of nodes according to the window when zoom in on hover HOT 2
- how to stop force directed graph from moving the nodes?
- how to get a graph with less spacing? HOT 3
- How can i add minimap for graph? HOT 1
- Uncaught TypeError: object null is not iterable HOT 1
- when add style zoom to root dom,node cannot trigger click and hover events
- The 3d graph suddenly hops or flickers at regular intervals HOT 2
- Is there an example of displaying a label on a link in ForceGraph2D? HOT 1
- Can't remove force with TypeScript interface for d3Force HOT 1
- I cannot modify d3Force parameters and have them visible in a simulation. HOT 1
- Search for node by node.id then can focus camera on that node
- Lasso tool for 2d node/edge selection
- a bug
- Vector Embeddings --> UMAP projections of nodes for organizing within 2 or 3-D space. HOT 1
- Load node data on hover
- Scaling issue with HTML labels HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from react-force-graph.