Випущено Inertia.js v3.0.0. Ми покривали бета‑версію раніше цього року, а фінальний реліз поєднує ті функції з низкою виправлень і доопрацювань, накопичених під час бети. Оновлення стосується ядра та всіх трьох адаптерів (React, Vue і Svelte).
Ключові новинки:
useHttp для HTTP‑запитів, що не викликають навігаціюuseForm та useHttpAxios більше не є обов'язковою залежністю. Inertia тепер постачається зі своїм XHR‑клієнтом, що за замовчуванням прибирає Axios (~15KB gzipped) з вашого bundle. Якщо ви використовуєте Axios‑interceptors або хочете зберегти попередню поведінку, Axios усе ще доступний як опціональна peer dependency.
Пакет qs також видалено. Встановіть його вручну, якщо ваш застосунок від нього залежить.
PR: #2833
Новий хук useHttp закриває давню потребу в запитах, які не викликають навігацію. Він повертає реактивний стан — processing, errors, progress та isDirty — з тим самим зручним DX, що й useForm. Також є інтеграція з Precognition 2.x для валідації в реальному часі.
const http = useHttp({
query: '',
})
const search = () => {
http.get('/api/search').then((results) => {
console.log('Found:', results.length)
})
}
Хук призначений для маршрутів, які повертають response()->json(), а не Inertia::render(). Підтримується опція withAllErrors для повернення всіх помилок валідації одразу, а не лише першої для кожного поля.
Inertia v3 додає повноцінний API для оптимістичних оновлень у router, useForm та useHttp. Зміни застосовуються миттєво до стану сторінки й автоматично відкатуються при відповідях поза діапазоном 2xx. Снапшотуються лише ключі, явно визначені в колбеку. Також коректно обробляються паралельні оптимістичні оновлення — кожен одночасний запит має власний снімок для відкату.
// Fluent
router
.optimistic((props) => ({
todos: [...props.todos, { id: Date.now(), name, done: false }],
}))
.post('/todos', { name })
// Inline option
router.post('/todos', { name }, {
optimistic: (props) => ({
todos: [...props.todos, { id: Date.now(), name, done: false }],
}),
})
Компонент <Form> також отримав проп optimistic, а колбеки optimistic і transform тепер підтримують виведення generic‑типів.
const form = useForm({ name: '' })
const addTodo = () => {
form
.optimistic((props) => ({
todos: [...props.todos, { id: Date.now(), name: form.name, done: false }],
}))
.post('/todos')
}
useLayoutProps і setLayoutProps дають сторінкам акуратний спосіб передати дані в layout без використання event bus або provide/inject. Макети оголошують значення за замовчуванням; сторінки викликають setLayoutProps(), щоб їх перевизначити. У фінальній реалізації layout props передаються напряму як props компоненту.
SSR тепер працює під час npm run dev без запуску окремого Node.js‑серверного процесу. Плагін Vite обробляє це автоматично; також додано фікс для flash-of-unstyled-content. Для продакшен‑збірки робочий процес не змінився: vite build && vite build --ssr, потім php artisan inertia:start-ssr.
У v3.0.0 також з'явилися такі можливості. Деталі — в офіційній документації та в інструкції з оновлення:
createInertiaApp() без аргументів (#2883) — тепер можна викликати без конфігу при використанні плагіна Vite; також додано опцію layout та колбек withApp (#2884, #2949)preserveFragment (#2897, #2899) — зберігати фрагменти URL під час редиректів, зі серверною підтримкою в Laravel adapterpreserveErrors (#2819) — зберігати помилки валідації під час часткових перезавантажень<Deferred> проп слоту reloading (#2860) — компонент більше не скидається при часткових перезавантаженнях; використовуйте новий slot prop для обробки цього стануHttpError (#2999) — типізований базовий клас для HTTP‑винятків у системі подійstrictMode: true у createInertiaApp(), щоб увімкнути React.StrictModeSharedPageProps у типах для подій і createInertiaApp (#2956) — shared props тепер включені в TypeScript‑типи для подій і налаштування додаткуЦе великий реліз зі зворотно‑несумісними змінами, зокрема оновлені вимоги до версій фреймворків, видалення Axios, ESM‑only вивід та низка перейменованих API. Перед оновленням уважно ознайомтеся з офіційною інструкцією з оновлення.
Щоб оновити:
npm install @inertiajs/vue3@^3.0 # or @inertiajs/react / @inertiajs/svelte
npm install @inertiajs/vite@^3.0
composer require inertiajs/inertia-laravel:^3.0
Джерела
Вам цікаво дізнатися, як спростити інтеграцію RabbitMQ у вашому Laravel-додатку? У нашій статті ми розглянемо пакет Simple RabbitMQ, який дозволяє легко налаштувати багатозʼєднання, публікувати повідомлення та обробляти черги за допомогою простого синтаксису. Читайте далі, щоб дізнатися більше!
PHP 8.5 обіцяє безліч нових можливостей, таких як оператор Pipe, функції `array_first()` та `array_last()`, а також нове розширення URI. Чи готові ви дізнатися, як ці функції можуть спростити вашу розробку? Читайте далі, щоб дізнатися більше про ці захоплюючі нововведення
Досліджуйте новий пакет Data Model для PHP, який спрощує процес гідратації об'єктів без зайвих складнощів! Дізнайтеся, як впровадження типобезпечних об'єктів може революціонізувати ваш підхід до розробки, читаючи нашу статтю