vue.js 是否可以更改布局思想 prop 的内容?

jei2mxaa  于 2022-12-14  发布在  Vue.js
关注(0)|答案(1)|浏览(116)

我有这样布局:

<template>
  ...navigation for all pages..
  <h1>content for X??</h1>
  <slot />
  ...footer for all pages...
</template>

对于页面/索引.vue:

<template>
  index is here ok :)
</template>

和页面/关于.vue:

<template>
 about is here ok :)
</template>

我希望我可以呈现h1在布局为不同的网页,而不是打印相同的文本为所有。
我知道我可以将h1从布局移动到页面并编辑每个页面。
但是h1和slot之间有很多内容,我只想更改文本。

wqsoz72f

wqsoz72f1#

有很多方法可以达到你的要求,但最简单的方法是使用命名插槽。
在vue文档中(请花些时间深入研究,可用的deftail和解释数量非常可观):
<slot>元素有一个特殊的属性name,它可用于为不同的插槽分配一个唯一的ID,以便您可以确定应该在哪里呈现内容。
您可以在nuxt项目的layouts文件夹中创建一个TitleLayout.vue组件,如下所示:

<!-- layouts/TitleLayout.vue -->
<template>
    <div>
        <nav>
            <nuxt-link to="/"> index </nuxt-link>
            <nuxt-link to="about"> about </nuxt-link>
        </nav>
        <main>
            <h1>
                <slot name="heading">
                    a default title
                </slot>
            </h1>
            <slot/>
        </main>
    </div>
</template>

您可以在pages/About.vue中使用它

<!-- pages/About.vue -->
<template>
    <div>
        <NuxtLayout name="with-title">
            <template #heading> Hello from the about title </template>

            Lorem ipsum dolor sit amet consectetur adipisicing elit. Quibusdam eius
            rem, sit repellendus reiciendis explicabo? Dolorum totam molestias
            adipisci cupiditate distinctio, libero dolorem iusto, quidem esse
            excepturi voluptatem repellendus facere.

        </NuxtLayout>
    </div>
</template>

该过程记录在下一个布局文档中。

相关问题