Замена записи в истории в Inertia
Давайте теперь представим цепочку: человек открыл список постов, зашёл в черновик, а после сохранения должен оказаться на готовой записи. Промежуточный экран черновика в истории ему не нужен - кнопка «назад» не должна возвращать на форму, которую уже закрыли.
Обычный визит добавляет новую
запись в history браузера.
Атрибут replace у Link
меняет поведение: вместо
pushState вызывается
replaceState, и текущий
адрес в стеке подменяется,
а не дополняется.
Давайте опишем экран готового поста:
<?php
use Illuminate\Support\Facades\Route;
use Inertia\Inertia;
Route::get('/posts/draft', function () {
return Inertia::render('Posts/Draft', [
'title' => 'Draft',
]);
});
Route::get('/posts/42', function () {
return Inertia::render('Posts/Show', [
'title' => 'Post #42',
]);
});
?>
Давайте на черновике поставим ссылку на запись с заменой истории:
<script setup>
import { Link } from '@inertiajs/vue3'
defineProps({
title: String,
})
</script>
<template>
<h1>{{ title }}</h1>
<Link href="/posts/42" replace>
Open published post
</Link>
</template>
После выбора смены работника Paul откройте его карточку так, чтобы в истории не остался экран выбора смены.