РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
⊗ppinSpEvCl 91 of 112 menu
◀ ▶

Flash с клиента в Inertia

Скажем, человек нажал «Copy link» на карточке поста, и нужно сразу показать короткую надпись об успехе, хотя Laravel на этот клик не вызывали. Ждать следующего визита или заводить отдельный локальный ref только ради такой подсказки неудобно: flash-данные уже живут в page.flash и умеют исчезать при следующем заходе.

Давайте изучим метод flash у router. Он дописывает flash-данные на клиенте без запроса. Можно передать ключ и значение, объект полей или функцию, которая получает текущий flash и возвращает новый. Значения сливаются с уже лежащими в page.flash.

Давайте отдадим страницу одного поста:

<?php use Illuminate\Support\Facades\Route; use Inertia\Inertia; Route::get('/posts/1', function () { return Inertia::render('Posts/Show', [ 'title' => 'Sample post', ]); }); ?>

Давайте по кнопке запишем flash-сообщение и выведем его из usePage:

<script setup> import { router, usePage } from '@inertiajs/vue3' defineProps({ title: String, }) const page = usePage() function copyLink() { router.flash('toast', { message: 'Link copied.', }) } </script> <template> <h1>{{ title }}</h1> <button type="button" @click="copyLink"> Copy link </button> <p v-if="page.flash.toast"> {{ page.flash.toast.message }} </p> </template>

Сделайте карточку работника Paul так, чтобы после копирования номера на экране появлялось flash-сообщение без похода на сервер.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить