GithubHelp home page GithubHelp logo

Comments (7)

vasturiano avatar vasturiano commented on August 24, 2024 3

@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.

vasturiano avatar vasturiano commented on August 24, 2024 1

@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.

uhessbai avatar uhessbai commented on August 24, 2024

@vasturiano thanks for your reply ! I will come back in a few days at home, I will try that soon :)

from react-force-graph.

uhessbai avatar uhessbai commented on August 24, 2024

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.

uhessbai avatar uhessbai commented on August 24, 2024

@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.

itsPreto avatar itsPreto commented on August 24, 2024

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.

uhessbai avatar uhessbai commented on August 24, 2024

@vasturiano it works perfectly! thanks for your help! I can post the code if someone needs it

from react-force-graph.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.