搜索

首页  >  问答  >  正文

将标题重写为:Vue 3:将内容传送到元素并进行替换

我正在使用Vue 3的teleport将元素渲染到一个div中,它按预期工作。

Teleport会将项目添加到所选元素中,但不会替换div中的当前元素。

我如何设置teleport以替换div中的元素,类似于vue应用程序在挂载时替换锚点div内容的方式?

背景:出于SEO的原因,我需要占位元素,直到应用程序渲染和传送。

<!-- 应用程序外部的HTML -->
<div>
  <div id="teleport-here">传送占位符...我希望这个被传送组件替换</div>
  <div id="app">当应用程序挂载时,这个占位符将被应用程序替换...</div>
</div>

<!-- 传送组件 -->
<teleport to="#telport-here">
  <div>传送内容...</div>
</teleport>


P粉237029457P粉237029457385 天前980

全部回复(1)我来回复

  • P粉903969231

    P粉9039692312023-11-07 09:40:07

    您需要有一些单独的逻辑来在必要时删除占位符。

    setup中将占位符的内容设置为空:

    Vue.createApp({
      setup() {
        const placeholder = document.getElementById('teleport-here');
    
        placeholder.innerHTML = '';
      }
    }).mount('#app');
    <script src="https://unpkg.com/vue@next"></script>
    
    <div>
      <div id="teleport-here">Teleport placeholder... I want this to be replaced by the teleport component</div>
      <div id="app">This placeholder will be replaced with app when app mounts...
        <!-- teleport component -->
        <teleport to="#teleport-here">
          <div>Teleport content...</div>
        </teleport>
      </div>
    </div>

    回复
    0
  • 取消回复