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

Сохранение состояния в Inertia

Допустим, над списком постов есть черновик заметки в поле, а кнопка рядом лишь обновляет сами записи с сервера. После такого визита Inertia подставляет новый массив posts, и без особой настройки компонент может пересоздаться: набранный текст исчезает, хотя адрес и экран те же.

Опция preserveState говорит клиенту сохранить локальное состояние Vue при смене пропсов. Её передают вместе с методом get или reload у объекта router. Список обновится, а значение в ref останется на месте.

Давайте отдадим посты и примем обновление списка:

<?php use Illuminate\Support\Facades\Route; use Inertia\Inertia; Route::get('/posts', function () { return Inertia::render('Posts/Index', [ 'posts' => ['Alpha', 'Beta'], ]); }); ?>

Давайте добавим поле черновика и кнопку обновления с сохранением состояния:

<script setup> import { ref } from 'vue' import { router } from '@inertiajs/vue3' defineProps({ posts: Array, }) const draft = ref('') function refreshPosts() { router.get('/posts', {}, { preserveState: true, }) } </script> <template> <input v-model="draft" type="text" /> <button type="button" @click="refreshPosts"> Refresh posts </button> <ul> <li v-for="post in posts" :key="post"> {{ post }} </li> </ul> </template>

Сделайте страницу работников с полем заметки Lena и кнопкой обновления списка так, чтобы текст в поле не пропадал после ответа сервера.

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