开发者问题收集

NuxtLink 正在更新 nuxt 3 应用程序中的路线,但不会呈现内容

2021-12-17
11534

我尝试在 Nuxt 3 应用中使用 NuxtLink 来使用路线,它正在更改路线,但没有显示任何内容。但是,如果我刷新或重新加载之前为空白的更新路线,那么它会正常显示其内容。

/pages/index.vue

<template>
  <div>
    <h1>It's Nuxt3!</h1>
    <p>Home Page</p>
  </div>
  <NuxtLink to="/user">User</NuxtLink>
</template>

/pages/user.vue

<template>
  <div>
    <h1>It's Nuxt3!</h1>
    <p>User Page</p>
  </div>
</template>

文件夹结构 &插图:

文件夹结构

插图

1个回答

Vue 的控制台警告提供了一个有用的提示:

[Vue warn]: Component inside <Transition> renders non-element root node that cannot be animated. 
  at <Index onVnodeUnmounted=fn<onVnodeUnmounted> ref=Ref< VueInstance > key="/" > 
  at <BaseTransition mode="out-in" appear=false persisted=false  ... > 
  at <Transition name="page" mode="out-in" > 
  at <NuxtLayout key=0 name=undefined > 
  at <RouterView> 
  at <NuxtPage> 
  at <App> 
  at <NuxtRoot>

日志指向 <Index> (即 index.vue ),我们看到 组件有两个根节点 ,Vue 将它们包装在一个片段节点中,从而导致“非元素根节点”警告:

<template>
  <div> 1️⃣ <!-- root node -->
    <h1>Hello, World</h1>
    <p>It's Nuxt3!</p>
  </div>
  <NuxtLink to="/user">User</NuxtLink> 2️⃣ <!-- root node -->
</template>

从技术上讲,这 应该 在 Nuxt 3 中得到支持,它使用支持多个根节点的 Vue 3,但我不确定为什么在这种情况下不允许这样做。

一种解决方法是将组件模板包含单个元素,例如 div :

// index.vue
<template>
  <div> 👈 <!-- single root node -->
    <div>
      <h1>Hello, World</h1>
      <p>It's Nuxt3!</p>
    <div>
    <NuxtLink to="/user">User</NuxtLink>
  </div>
</template>
tony19
2021-12-18