You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何向Inertia框架的layout组件传递slot插槽或prop属性?

Inertia布局组件传插槽/Props的解决方案

问题根因

使用Inertia默认的layout: 组件配置方式时,Inertia只会将当前页面组件整体作为布局的默认插槽传入,页面内定义的具名插槽不会自动透传到布局组件。同时你原有CardLayout中直接用{{ $slots.title }}插值的写法不符合Vue规范,$slots是虚拟节点数组,不能直接作为文本渲染。

修正步骤

第一步:修正CardLayout代码

将插槽渲染改为标准Vue语法:

<template>
    <h1><slot name="title" /></h1>
    <slot/>
</template>

第二步:选择对应传值方案

方案A:页面内直接嵌套布局(最直观,推荐)

无需使用Inertia的layout配置,按普通Vue组件方式嵌套传值即可,修改ForgotPassword组件:

<template>
    <CardLayout>
        <template #title>Forgot Password</template>
        Forgot pw stuff goes here...
    </CardLayout>
</template>

<script>
import CardLayout from "@/Layouts/CardLayout";

export default {
    // 移除原有layout配置
}
</script>

方案B:使用函数式layout配置(需要保留Inertia layout配置时用)

将layout属性改为函数,手动用渲染函数传递插槽和Props:

<script>
import CardLayout from "@/Layouts/CardLayout";
import { h } from 'vue'

export default {
    layout() {
        return h(CardLayout, 
            // 第二个参数为要传递给布局的Props,无需传Props可留空
            {
                customProp: '自定义属性值'
            },
            // 第三个参数为要传递的插槽
            {
                title: () => 'Forgot Password',
                default: () => this.$slots.default()
            }
        )
    },
}
</script>

内容的提问来源于stack exchange,提问作者bastinald

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 17:54:01