vue.js Flash消息不显示inertiajs和laravel

7xzttuei  于 2023-03-24  发布在  Vue.js
关注(0)|答案(1)|浏览(107)

以下是我所做的:Laravel 10,Inertiajs v1
在HandleInertiaRequests上:

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

在控制器上:

public function store(Request $request)
{
    Listing::create($request->all());
    return Redirect()->route('listing.index')->with('success', 'Listing was created!');
}

布局:

<template>
    <div>
        <Link href="/">Main Page </Link>&nbsp;
        <Link href="/hello">Show Page</Link>
        <!--<div>The page with time:{{ timer }}</div>-->
    </div>
    <div v-if="flashSuccess" class="success">
        {{ flashSuccess }}
    </div>

    <slot>Default</slot>
</template>

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

const page = usePage()
const flashSuccess =  page.props.flash.success

</script>

我的问题是flash消息没有显示,但是如果我做一个热重新加载(我的意思是改变编辑器和页面自动刷新代码),消息工作。没有重新加载什么都没有发生。

7uzetpgm

7uzetpgm1#

你能试着把你的代码改成这样吗?
惯性布局文件:

<div v-if="$page.props.flash.success" class="success">
    {{ $page.props.flash.success }}
</div>

而不是直接使用usePage()

相关问题