Nuxt3--布局模板

默认布局

那些放在layouts/目录下的.vue文件会被自动加载进来,如果我们创建的.vue名为default.vue,将会被用于项目所有页面中作为布局模板。

layouts/default.vue:

<template>
  <div>
	default.vue:
    <slot />
  </div>
</template>

这样页面就会直接出现default.vue文件内的内容了。

自定义布局

如果我们的布局文件名不叫default,而是别的,比如custom.vue,想要使用它们,就必须在某个页面中设置页面属性layout。

layouts/custom.vue:

<template>
  <div>
    custom.vue!
    <slot />
  </div>
</template>

然后你的其他页面那些需要用直接写如下代码就可以。

<script>
export default {
  layout: "custom"
}
</script>

注意嵌套路由中是没有效果的

使用NuxtLayout

可以使用NuxtLayout组件结合slots获得完全控制力,同时需要设置组件选项layout: false。
helloworld.vue

<template>
  <NuxtLayout name="custom">
    <template #header>
     <h1>hello page</h1>
    </template>
    some content...
  </NuxtLayout>
</template>
<script>
export default {
  layout: false,
};
</script>

修改一下custom.vue

<template>
  <div>
    内容来自自定义布局页custom.vue!
    <slot name="header"/>
    <slot />
  </div>
</template>

我们甚至能组合多个布局页:

<template>
  <div>
    <NuxtLayout name="custom">
      <template #header>
        <h1>hello page</h1>
      </template>
      some content...
    </NuxtLayout>

    <NuxtLayout name="default">
      some content...
    </NuxtLayout>
  </div>
</template>

配合

由于需要设置layout选项,所以在这个script标签旁边同时使用

<script>
export default {
  layout: "custom",
};
</script>

<script setup>
// your setup script
</script>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Nuxt.js中,可以使用`<nuxt-link>`来实现带参数的跳转。具体的写法是在`<nuxt-link>`标签的`to`属性中使用`params`来传递参数。例如: ```html <nuxt-link :to="{ name: 'products', params: { keyword: item.name }}">{{ item.name }}</nuxt-link> ``` 这样就可以将`item.name`作为`keyword`参数传递给名为`products`的路由页面。 接受参数的方法有两种: 1. 在`asyncData(ctx)`方法中获取参数。可以使用`ctx.params.keyword`来获取通过参数传递的值。例如: ```javascript async asyncData(ctx) { console.log(ctx.params.keyword) // 可以获取到通过参数传递的值 } ``` 2. 在`created()`生命周期中获取参数。可以使用`this.$route.params.keyword`来获取通过参数传递的值。例如: ```javascript created() { console.log(this.$route.params.keyword) // 可以获取到通过参数传递的值 } ``` 需要注意的是,`<nuxt-link>`的使用方式与`<router-link>`相同,所以在接受参数方面也可以参考`<router-link>`的用法。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [nuxt:nuxt-link的动态路由和传参](https://blog.csdn.net/weixin_45844049/article/details/105581675)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值