Компоненты Vue в Inertia с Laravel, кажется, загружаются дважды

В недавно созданном проекте Laravel с Inertia и Vue у меня возникает ошибка, заключающаяся в том, что он дважды запускает код внутри моих компонентов vue.

Для простой тестовой демонстрации у меня есть Тест .vue с этим кодом

<template>
<div>
    TEST
</div>
</template>

<script>
export default {
    name: "Test",
    mounted() {
        console.log('test')
    }
}
</script>

<style scoped>

</style>

Маршрут в web.php:

Route::get('/test', array(App\Http\Controllers\DashboardController::class, 'test'));

В контроллере:

    public function test(): Response
    {
        return Inertia::render('Test');
    }

Когда я перехожу к маршруту / тесту, он дважды повторяет «тест», установленный на моей консоли. В более продвинутых компонентах, которые вызывают API и тому подобное, также вызывает их дважды.

введите описание изображения здесь

Я подозреваю, что мой проект настроен неправильно в app.blade.php или app .js, но не могу понять.

Я следовал руководствам по https://inertiajs.com/server-side-setup и https://inertiajs.com/client-side-setup, чтобы настроить это.

Мой исходный код находится здесь: https://github.com/ekstremedia/laravel-inertia

Изменить: кажется, только дважды в первом загружаемом компоненте. Если я в этом компоненте ссылаюсь на другой компонент и перехожу туда, он не загружается дважды.


person Terje Nesthus    schedule 03.06.2021    source источник


Ответы (1)


Я обнаружил, что это решается путем изменения файла app.js в каталоге ресурсов следующим образом:

import Vue from 'vue'
import { App as InertiaApp, plugin as InertiaPlugin } from '@inertiajs/inertia-vue'


Vue.use(InertiaPlugin)

new Vue({
    render: (h) =>
        h(InertiaApp, {
            props: {
                initialPage: JSON.parse(app.dataset.page),
                resolveComponent: (name) => require(`./Pages/${name}`).default,
            },
        }),
}).$mount(app);

Кажется, ваша проблема заключалась в том, как вы инициализировали свое инерционное приложение.

person Umar Adejoh    schedule 03.06.2021