Alpaka in React.js importieren
Ich versuche, ein Alpaka-Formular in einer React-App zu verwenden:
import React, { useEffect, useRef } from "react";
import $ from "jquery"; import * as popper from "popper.js"; import * as bootstrap from "bootstrap"; import * as handlebars from "handlebars"; import alpaca from "alpaca"; var jp = require('jsonpath'); export default function Form() { useEffect(() => { $("#form").alpaca({
});
}, []);
return <>
<h2>Alpaca Form</h2>
<div id="form"/>
</>;
}
Webpack kompiliert dies, aber im Browser sehe ich diese Meldung:
jquery__WEBPACK_IMPORTED_MODULE_1___default(...)(...).alpaca is not a function
Während der Ausführung von "npm start" zeigt der Browserfehler Folgendes an: ReferenceError: jQuery ist nicht definiert.
Antworten
Für Alpaca ist handlebars.js erforderlich, daher müssen Sie es importieren, bevor Sie alpaca.js importieren können. Können Sie es versuchen und feststellen, ob dies für Sie funktioniert?
Anscheinend habe ich eine Lösung gefunden, die in einer Spring Boor-Anwendung funktioniert. Zuerst erstelle ich ein statisches js-Skript mit nur einer Funktion:
function alpacaForm(tag, config) {
$(tag).alpaca(config);
}
Dann füge ich dieses Skript in index.html ein und folge allen Alpaka-Abhängigkeiten:
<!-- dependencies (jquery, handlebars and bootstrap) -->
<script type="text/javascript" src="//code.jquery.com/jquery-1.11.1.min.js"></script>
<script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/handlebars.js/4.0.5/handlebars.min.js"></script>
<link type="text/css" href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.1/css/bootstrap.min.css" rel="stylesheet"/>
<script type="text/javascript" src="//maxcdn.bootstrapcdn.com/bootstrap/3.3.1/js/bootstrap.min.js"></script>
<!-- alpaca -->
<link type="text/css" href="//cdn.jsdelivr.net/npm/[email protected]/dist/alpaca/bootstrap/alpaca.min.css" rel="stylesheet"/>
<script type="text/javascript" src="//cdn.jsdelivr.net/npm/[email protected]/dist/alpaca/bootstrap/alpaca.min.js"></script>
<script type="text/javascript" src="./js/alpacaForm.js"></script>
Dann rufe ich einfach alpacaForm in meiner React-App auf:
export default function Form() {
useEffect(() => {
alpacaForm("#form", {
"schema": {
...
},
"options": {
...
}
}
);
}, []);
return <>
<h2>Alpaca Form</h2>
<div id="form"/>
</>;
}
Den Quellcode finden Sie hier: https://gitlab.com/AlbertGevorgyan/bootreact