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

Laravel 10 + Inertia.js v1中Flash消息无法显示的问题求助

问题解决:Laravel + Inertia.js Flash消息无法正常显示

解决方案

1. 修复前端响应式问题

直接读取page.props.flash.success会丢失响应式,导致Inertia跳转后props更新时变量无法同步。需要用Vue的computed包裹该值:

修改布局组件的<script setup>部分:

<script setup>
import { Link, usePage } from '@inertiajs/vue3'
import { computed } from 'vue'

const page = usePage()
// 转换为响应式计算属性
const flashSuccess = computed(() => page.props.flash.success)
</script>

2. 优化后端Flash消息获取(可选)

使用session()->pull('success')替代get(),确保消息被读取后立即从session中移除,避免重复显示:

修改HandleInertiaRequests的share方法:

public function share(Request $request): array
{
    return array_merge(parent::share($request), [
        'flash' => [
            'success' => $request->session()->pull('success')
        ]
    ]);
}

问题原因

  • 前端:普通变量无法响应page.props的更新,只有计算属性能实时监听Inertia跳转后的props变化,更新Flash消息状态。
  • 后端:get()方法仅读取session中的Flash消息但不清除,可能导致消息在后续请求中重复出现;pull()则会在读取后自动移除消息,符合Flash消息"一次性显示"的设计。

完成修改后,创建Listing并跳转,Flash消息即可正常显示,无需依赖热重载刷新页面。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 06:20:08