Устранение неполадок с функциями JavaScript Preline пользовательского интерфейса в среде React/Inertia

Я потратил около шести часов, пытаясь решить эту проблему, но безуспешно:

В качестве основных технологий я использую Laravel, Vite, React и Inertia. Моя цель — реализовать боковую панель Preline, включающую аккордеонные NavLinks. Однако, поскольку переходы HeadlessUI создают эту боковую панель, ни одна из функций Preline не работает. Я мог бы создать компонент, который отображается при загрузке страницы, позволяя всем функциям выполняться правильно. Однако я ожидаю возникновения подобных проблем с другими компонентами или подозреваю, что это может произойти во время навигации по страницам. Буду очень признателен за любую помощь в решении данного вопроса.

Как вы, возможно, знаете, это конфигурация Inertia:

import "./bootstrap";
import "../css/app.css";

import { createRoot } from "react-dom/client";
import { createInertiaApp } from "@inertiajs/react";
import { resolvePageComponent } from "laravel-vite-plugin/inertia-helpers";

const appName = import.meta.env.VITE_APP_NAME || "Laravel";

createInertiaApp({
    title: (title) => `${appName} | ${title}`,
    resolve: (name) =>
        resolvePageComponent(
            `./Pages/${name}.jsx`,
            import.meta.glob("./Pages/**/*.jsx")
        ),
    setup({ el, App, props }) {
        const root = createRoot(el);

        root.render(<App {...props} />);

        delete el.dataset.page;
    },
    progress: {
         color: "#fbbf24",
    },
});

И именно поэтому я не могу использовать Preline Guide

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
0
0
497
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

После 24 часов попыток разных вещей наконец нашел решение. Пишу сюда, чтобы кому-то помогло. Добавьте несколько строк в свой код и создайте файл app.jsx (в котором есть ваша конфигурация Inertia) следующим образом, и все готово:

import "./bootstrap";
import "../css/app.css";

import { createRoot } from "react-dom/client";
import { createInertiaApp } from "@inertiajs/react";
import { resolvePageComponent } from "laravel-vite-plugin/inertia-helpers";
import { HSStaticMethods } from "preline";

HSStaticMethods.autoInit();

const observer = new MutationObserver((mutationsList) => {
    for (const mutation of mutationsList) {
        HSStaticMethods.autoInit();
    }
});

observer.observe(document.body, {
    attributes: true,
    subtree: true,
    childList: true,
    characterData: true,
});

const appName = import.meta.env.VITE_APP_NAME || "Laravel";

createInertiaApp({
    title: (title) => `${appName} | ${title}`,
    resolve: (name) =>
        resolvePageComponent(
            `./Pages/${name}.jsx`,
            import.meta.glob("./Pages/**/*.jsx")
        ),
    setup({ el, App, props }) {
        const root = createRoot(el);

        root.render(<App {...props} />);

        delete el.dataset.page;
    },
    progress: {
        color: "#fbbf24",
    },
});

Особая благодарность «biskoot», который ответил на тот же вопрос о HSDropdown здесь, и я смог решить его для всех инструментов в PrelineUI.

Другие вопросы по теме