Ich habe eine Vue-App, die Sätze der gleichen Komponente bedingt anzeigt, ich möchte an die erstellten oder bereitgestellten Methoden anknüpfen, aber Vue wird früher weiter verwendet Komponenten und nicht die Methoden auslösen. Ich habe versucht, die Komponenten in Keep-Alive-Tags ohne Wirkung zu machen.Kann Vue JS (v2) nicht daran hindern, Komponenten wiederzuverwenden
Der folgende Code zeigt, was Sie auf der Seite erwarten würden: Die Änderung von someVariable zu 'test1' oder 'test2' zeigt die relevanten Komponenten, aber die erstellten/mounten Methoden werden nur zweimal ausgelöst (zB test1 'protokolliert die Erstellung und das Mounten von 1 Komponente mit dem Label type1 und ändert dann in' test2 'nur 1 weitere Komponente mit dem Label type3).
Aktuell V2.1.10
HTML
<div id="app">
<div v-if="someVariable === 'test1'">
<keep-alive>
<test-component data-type="type1"></test-component>
</keep-alive>
</div>
<div v-if="someVariable === 'test2'">
<keep-alive>
<test-component data-type="type2"></test-component>
</keep-alive>
<keep-alive>
<test-component data-type="type3"></test-component>
</keep-alive>
</div>
</div>
JS/Vue
Vue.component('test-component', {
props: ['data-type'],
template: '<div><p>In the component: {{ dataType }}</p></div>',
created: function() {
console.log('component created: ', this.dataType);
},
mounted: function() {
console.log('component mounted: ', this.dataType);
}
});
var app = new Vue({
el: '#app',
data: {
someVariable: ""
}
});