Giter Site home page Giter Site logo

Comments (7)

weizhenye avatar weizhenye commented on May 18, 2024 1

I think #10 is not a proper solution to solve it.

Suppose there is a transition with 1s and I set destroyDelay to 1s, someday I extend transition to 2s, then I have to change destroyDelay too, I think components should not coupled with its style.

In this situation, we may use <keep-alive> to solve it.

<keep-alive>
  <modal v-if="showModal" @close="showModal = false">
    <h3 slot="header">custom header</h3>
  </modal>
</keep-alive>

from vue-highcharts.

ErwanLent avatar ErwanLent commented on May 18, 2024

Original build that shows problem: https://jsfiddle.net/mwLbw11k/355/
Modified build with empty onDestroy function: https://jsfiddle.net/2ejeq43y/2/

from vue-highcharts.

weizhenye avatar weizhenye commented on May 18, 2024

Remove beforeDestroy may cause memory leak, you can find it with Chrome DevTools, repeat show and hide Modal several times, click Profiles -> Take Heap Snapshot -> Take Snapshot, then find Detached DOM tree.

Maybe we should find other ways to fix it.

from vue-highcharts.

weizhenye avatar weizhenye commented on May 18, 2024

I tried to replace beforeDestroy with destroyed, but found that destroyed is also triggered before afterLeave, and it's intended behavior in 2.x.

from vue-highcharts.

ErwanLent avatar ErwanLent commented on May 18, 2024

Okay, good to know. I'll play around with some possible solutions today.

from vue-highcharts.

ErwanLent avatar ErwanLent commented on May 18, 2024

I've found a solution. chart.destroy() needs to be called for there to be no memory leak. However, if you wait a delay inside the beforeDestroy event, this.chart becomes null and you cannot call destroy() on it. Highcharts, however, saves all the charts globally in Highcharts.charts. If you store the chart id in beforeDestroy, wait a delay for a transition to finish, then call the destroy() function on the chart stored in the Highcharts.charts array, the problem is solved.

I've forked the repo and added a destroyDelay prop that gives the option of putting in a millisecond amount before the highcharts is destroyed. I've run the build process, forked the repo, and opened a pull request. Please feel free to change the prop name.

Fix can be played with here: https://jsfiddle.net/hpkoemtw/2/

from vue-highcharts.

ErwanLent avatar ErwanLent commented on May 18, 2024

That solution works, thanks!

from vue-highcharts.

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.