При навигации по истории браузера Inertia восстанавливает страницы, используя данные, кэшированные в истории. Однако Inertia не восстанавливает состояние компонента локальной страницы, поскольку это недоступно. Это может привести к появлению устаревших страниц в истории Вашего браузера.
Например, если пользователь частично заполняет форму, затем уходит, а затем возвращается обратно, форма будет сброшена, и его работа будет потеряна.
Чтобы смягчить эту проблему, Вы можете указать Inertia, какое состояние локального компонента следует сохранить в истории браузера.
To save local component state to the history state, use the remember
feature to tell Inertia which data it should remember.
import { useRemember } from '@inertiajs/inertia-vue3'
export default {
setup() {
const form = useRemember({
first_name: null,
last_name: null,
})
return { form }
},
}
Теперь, когда Ваша локальная форма form
изменяется, Inertia автоматически сохраняет эти данные в состояние истории и восстанавливает их при навигации по истории.
Если Ваша страница содержит несколько компонентов, которые используют функцию запоминания, Вам необходимо предоставить уникальный ключ для каждого компонента, чтобы Inertia знала, какие данные нужно восстановить для каждого компонента.
import { useRemember } from '@inertiajs/inertia-vue3'
export default {
setup() {
const form = useRemember({
first_name: null,
last_name: null,
}, 'Users/Create')
return { form }
},
}
Если у Вас есть несколько экземпляров одного и того же компонента на странице, использующей функцию запоминания, не забудьте также включить уникальный ключ для каждого экземпляра компонента.
import { useRemember } from '@inertiajs/inertia-vue3'
export default {
setup({ user }) {
const form = useRemember({
first_name: null,
last_name: null,
}, `Users/Edit:${user.id}`)
return { form }
},
}
Если вы используете помощник формы, Вы можете передать уникальный ключ формы в качестве первого аргумента при создании экземпляра формы, и это приведет к тому, что данные формы и ошибки автоматически запоминаются.
import { useForm } from '@inertiajs/inertia-vue3'
const form = useForm('CreateUser', data)
const form = useForm(`EditUser:${user.id}`, data)
Свойство remember
во Vue 2 и хук useRemember
во Vue 3, React и Svelte следят за изменениями данных и автоматически сохраняют эти изменения в состоянии истории, а затем восстанавливают его при загрузке страницы.
Однако можно также управлять этим вручную, используя базовые методы remember()
и restore()
в Inertia.
import { Inertia } from '@inertiajs/inertia'
// Сохранить состояние локального компонента в состояние истории
Inertia.remember(data, 'my-key')
// Восстановить состояние локального компонента из состояния истории
let data = Inertia.restore('my-key')