Vue 3 имеет новую функцию Teleport, которая заменяет плагин portal-vue в vue 2. Однако я обнаружил, что невозможно перенести компонент в место, которое контролируется vue (= в приложении vue). Работал только при портировании вовне (тело, другие элементы ...).
const app = {
template: `
<div>
<h1>App</h1>
<div id="dest"></div>
<comp />
</div>`
}
Vue.createApp(app).component('comp', {
template: `
<div>
A component
<Teleport to="#dest">
Hello From Portal
</Teleport>
</div>`
}).mount('#app')
<script src="https://unpkg.com/[email protected]/dist/vue.global.js"></script>
<div id="app"></div>
Как видите, консоль даже сообщает, что цель телепорта уже должна быть отрисована. Но как я могу сказать vue, какой компонент нужно отрендерить первым? В моем примере цель находится в доме до телепорта.
Это не было проблемой в Portal-vue, и это довольно неприятно, потому что из-за этого концепция в целом становится менее удобной.
disabled
опору<Teleport to="#dest" disabled >
, он показывает содержимое телепорта, в этом случае он ведет себя как слот и по-прежнему вызывает предупреждение - person Boussadjra Brahim   schedule 30.08.2020[email protected]
). - person tony19   schedule 30.08.2020<comp>
- person Fuzzyma   schedule 30.08.2020