2.6.10
https://codepen.io/aaronbird/pen/JVRKwa
Π― Π½Π°ΠΏΠΈΡΠ°Π» Π΄Π΅ΠΌΠΎ:
<!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>
ΠΡΠΎΡΠ΅ΡΡ ΠΎΡΠ»Π°Π΄ΠΊΠΈ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
1 ΠΠ°ΠΆΠΌΠΈΡΠ΅ Β«Π‘ΠΎΠ±ΡΠ°ΡΡ ΠΌΡΡΠΎΡΒ» ΠΈ Β«Π‘Π΄Π΅Π»Π°ΡΡ ΡΠ½ΠΈΠΌΠΎΠΊ ΠΊΡΡΠΈΒ» (ΡΠ½ΠΈΠΌΠΎΠΊ 1).
2 ΠΠ°ΠΆΠΌΠΈΡΠ΅ ΠΊΠ½ΠΎΠΏΠΊΡ ΠΌΠ°ΡΡΡΡΡΠΈΠ·Π°ΡΠΈΠΈ ΡΠ»Π΅Π²Π° 10 ΡΠ°Π·, Π·Π°ΡΠ΅ΠΌ Π½Π°ΠΆΠΌΠΈΡΠ΅ Β«Π‘ΠΎΠ±ΡΠ°ΡΡ ΠΌΡΡΠΎΡΒ» ΠΈ Β«Π‘Π΄Π΅Π»Π°ΡΡ ΡΠ½ΠΈΠΌΠΎΠΊ ΠΊΡΡΠΈΒ» (ΡΠ½ΠΈΠΌΠΎΠΊ 2).
3 ΠΠ°ΠΆΠΌΠΈΡΠ΅ ΠΊΠ½ΠΎΠΏΠΊΡ ΠΌΠ°ΡΡΡΡΡΠΈΠ·Π°ΡΠΈΠΈ ΡΠ»Π΅Π²Π° 10 ΡΠ°Π·, Π·Π°ΡΠ΅ΠΌ Π½Π°ΠΆΠΌΠΈΡΠ΅ Β«Π‘ΠΎΠ±ΡΠ°ΡΡ ΠΌΡΡΠΎΡΒ» ΠΈ Β«Π‘Π΄Π΅Π»Π°ΡΡ ΡΠ½ΠΈΠΌΠΎΠΊ ΠΊΡΡΠΈΒ» (ΡΠ½ΠΈΠΌΠΎΠΊ 3).
Π‘Π³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ Β«ΡΠ½ΠΈΠΌΠΎΠΊΒ» Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
ΡΠ½ΠΈΠΌΠΎΠΊ 1:
ΡΠ½ΠΈΠΌΠΎΠΊ 2:
ΡΠ½ΠΈΠΌΠΎΠΊ 3:
ΠΠΎΡΠ»Π΅ 100 Π½Π°ΠΆΠ°ΡΠΈΠΉ:
VueComponent Π½Π΅ ΠΏΠ΅ΡΠ΅ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΡΡΡ, ΡΡΠΎ ΠΎΡΠΈΠ±ΠΊΠ°?
ΠΠΎΡΠ΅ΠΌΡ ΡΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ, ΡΡΠΎ ΠΎΡΠΈΠ±ΠΊΠ°?
ΠΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ Π½Π΅ Π±ΡΠ΄Π΅Ρ ΠΎΡΠΈΡΠ΅Π½ ΠΏΡΠΈ ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ΅Π½ΠΈΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ².
Π― ΠΏΠΎΡΠΌΠΎΡΡΡ Π½Π° ΡΡΠΎ.
ΠΡΠ»ΠΈ ΠΌΡ ΡΠ΄Π°Π»ΠΈΠΌ ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΠΈΠΉ ΡΠ·Π΅Π», Π²ΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ ΡΠΎΡ ΡΠ°Π½ΡΡΡΡ Π² ΠΊΠ΅ΡΠΈΡΡΠ΅ΠΌΠΎΠΌ ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΠΎΠΌ ΡΠ·Π»Π΅ vnode. ΡΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ ΡΡΠΈΠ»ΠΈΠ·ΠΈΡΡΡΡΡΡ. Π±ΡΠ΄Ρ ΠΊΠΎΠΏΠ°ΡΡ Π±ΠΎΠ»ΡΡΠ΅
Π£ ΠΌΠ΅Π½Ρ ΡΠ°ΠΊΠΆΠ΅ Π΅ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Ρ ΡΡΠ΅ΡΠΊΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ, ΡΠΌ. Https://github.com/bootstrap-vue/bootstrap-vue/issues/4214
Π― ΠΏΠΎΠΏΡΡΠ°Π»ΡΡ ΡΠΎΠ·Π΄Π°ΡΡ jsfiddle, Π½ΠΎ Π½Π΅ ΡΠ²Π΅ΡΠ΅Π½, ΠΊΠ°ΠΊ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅ΡΡΠΈ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΊΠ΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ.
ΠΠΉ, Π΅ΡΡΡ ΠΊΠ°ΠΊΠΈΠ΅-Π½ΠΈΠ±ΡΠ΄Ρ Π½ΠΎΠ²ΠΎΡΡΠΈ? ΡΡΠΎ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ ΡΠΆΠ΅ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½Ρ Ρ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ Π²Π΅ΡΠΊΠΎΠΉ? Π£ ΠΌΠ΅Π½Ρ ΡΠ° ΠΆΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°.
Π― Π±Ρ ΠΎΡΠ΅Π½Ρ Ρ ΠΎΡΠ΅Π» ΡΠ·Π½Π°ΡΡ Π½ΠΎΠ²ΠΎΡΡΠΈ ΠΏΠΎ ΡΡΠΎΠΌΡ ΠΏΠΎΠ²ΠΎΠ΄Ρ - ΠΏΠΈΠ°Ρ Π΅ΡΡΡ, Π½ΠΎ ΠΊΠ°ΠΆΠ΅ΡΡΡ ΠΌΠ΅ΡΡΠ²ΡΠΌ?
Π‘Π°ΠΌΡΠΉ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ
Π― Π±Ρ ΠΎΡΠ΅Π½Ρ Ρ ΠΎΡΠ΅Π» ΡΠ·Π½Π°ΡΡ Π½ΠΎΠ²ΠΎΡΡΠΈ ΠΏΠΎ ΡΡΠΎΠΌΡ ΠΏΠΎΠ²ΠΎΠ΄Ρ - ΠΏΠΈΠ°Ρ Π΅ΡΡΡ, Π½ΠΎ ΠΊΠ°ΠΆΠ΅ΡΡΡ ΠΌΠ΅ΡΡΠ²ΡΠΌ?