2.6.10
https://codepen.io/aaronbird/pen/JVRKwa
J'ai écrit une démo:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta http-equiv="X-UA-Compatible" content="ie=edge" />
<title>demo</title>
<style>
.link {
cursor: pointer;
user-select: none;
}
</style>
</head>
<body>
<script src="https://unpkg.com/vue/dist/vue.js"></script>
<div id="app">
<transition>
<keep-alive include="foo">
<component :is="target" @change="onChange"></component>
</keep-alive>
</transition>
</div>
<script>
const Foo = {
name: "foo",
template: `<div class="link" @click="$emit('change', 'bar')">Go to Bar</div>`
};
const Bar = {
name: "bar",
template: `<div class="link" @click="$emit('change', 'foo')">Go to Foo</div>`
};
Vue.component("foo", Foo);
Vue.component("bar", Bar);
const app = new Vue({
data: {
target: "foo"
},
methods: {
onChange(target) {
this.target = target;
}
}
}).$mount("#app");
</script>
</body>
</html>
Le processus de débogage est le suivant:
1 Cliquez sur "Collecter les ordures" et "Prendre un instantané du tas" (instantané 1)
2 Cliquez 10 fois sur le bouton de routage à gauche, puis cliquez sur «Collecter les déchets» et «Prendre un instantané du tas» (instantané 2)
3 Cliquez 10 fois sur le bouton de routage à gauche, puis cliquez sur «Collecter les déchets» et «Prendre un instantané du tas» (instantané 3)
Le "snapshot" généré est le suivant:
instantané 1:
instantané 2:
instantané 3:
Après avoir cliqué 100 fois:
VueComponent n'est pas recyclé, est-ce un bug?
Pourquoi cela se produit-il, est-ce un bug?
Le composant ne sera pas effacé lors du changement de composant.
Je vais jeter un oeil à ceci.
Tout le composant est conservé par le parent de vnode mis en cache , si nous supprimons le parent. puis les composants sont recyclés.
J'ai également un problème de fuite de mémoire, veuillez consulter: https://github.com/bootstrap-vue/bootstrap-vue/issues/4214
J'ai essayé de créer un jsfiddle mais je ne sais pas comment répliquer le comportement de mise en cache.
Hé, y a-t-il des nouvelles? ces mises à jour sont-elles déjà fusionnées avec la branche principale? J'ai le même problème.
J'aimerais vraiment voir une mise à jour sur ce problème - il y a des relations publiques mais cela semble mort?
Commentaire le plus utile
J'aimerais vraiment voir une mise à jour sur ce problème - il y a des relations publiques mais cela semble mort?