Команда Laravel випустила чудові оновлення для Inertia.js v2 та адаптера Laravel, які включають нові можливості, поліпшений досвід розробника та інше. Особлива подяка Pascal Baljet, який поділився ключовими функціями та працював над усіма новинами, а також усім, хто був залучений до роботи над Inertia!
Зазвичай, якщо компонент Inertia не існує, він просто "мовчить", відображаючи порожню сторінку без жодної інформації про помилку. Тепер, якщо ви активуєте inertia.ensure_pages_exist
, адаптер Laravel викине виняток у разі відсутності сторінки.
Припустимо, ви намагаєтеся відобразити компонент сторінки, але допустили помилку в написанні:
Route::get('/', function () {
return Inertia::render('welcome.missing');
})->name('home');
У випадку, якщо ви допустите помилку в написанні або забудете створити файл, ви отримаєте порожню сторінку:
Проте якщо ви активуєте параметр ensure_pages_exist
, ви отримаєте корисне повідомлення про помилку:
Щоб переглянути цей параметр конфігурації, можливо, вам доведеться повторно опублікувати чи оновити файл конфігурації config/inertia.php
, залежно від того, чи використовували ви один із стартер-китів Laravel або встановлювали з нуля:
php artisan vendor:publish --provider="Inertia\ServiceProvider" --force
Увага: Переконайтеся, що файл конфігурації inertia.php
під контролем версій або здійснили його резервне копіювання перед примусовим оновленням.
Адаптер Inertia для Laravel має команду консолі inertia:check-ssr
, яка перевіряє стан SSR-сервера. Ця перевірка стану може бути корисною для забезпечення належної роботи серверного рендерингу під час або незабаром після розгортання, а також періодично:
Коли ви користуєтеся допоміжною функцією для форм, ви можете скинути стан форми та очистити помилки, використовуючи окремі методи. Тепер, коли потрібно зробити ці обидві дії, ви можете викликати нову функцію:
// Виклики окремо
form.reset()
form.clearErrors()
// Скидає і очищає
form.resetAndClearErrors()
Деталі можна переглянути у Запиті на злиття #2414 проекту Inertiajs/inertia.
При виконанні ручного візиту тепер можна визначити зворотні виклики onSuccess()
, onError()
та onFinish()
:
import { router } from '@inertiajs/react'
router.push({
props: { search: 'Laravel' },
onSuccess: (page) => {},
onError: (errors) => {},
onFinish: (visit) => {},
})
Якщо ви хочете протестувати, як ваша програма реагує на часткові перезавантаження, ви можете використовувати методи reloadOnly()
та reloadExcept()
для виконання повторних запитів та перевірки:
$response->assertInertia(fn (Assert $page) => $page
->has('orders')
->missing('statuses')
->reloadOnly('statuses', fn (Assert $reload) => $reload
->missing('orders')
->has('statuses', 5)
)
);
Деталі можна знайти в документації по тестуванню часткових перезавантажень.
Якщо ви хочете дізнатися більше про всі можливості, виправлення помилок та роботу, що виконується над Inertia, перегляньте випуски inertiajs/inertia та випуски inertiajs/inertia-laravel. Офіційна документація містить деталі щодо всіх оновлень.