Importer l'alpaga dans React.js
J'essaie d'utiliser un formulaire Alpaca dans une application React:
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 compile ceci mais dans le navigateur je vois ce message:
jquery__WEBPACK_IMPORTED_MODULE_1___default(...)(...).alpaca is not a function
Lors de l'exécution de "npm start", l'erreur de navigateur affiche: ReferenceError: jQuery n'est pas défini.
Réponses
Alpaca nécessite handlebars.js, vous devez donc l'importer avant d'importer alpaca.js. Pouvez-vous l'essayer et dire si cela fonctionne pour vous?
On dirait que j'ai trouvé une solution qui fonctionne dans une application Spring Boor. Tout d'abord, je crée un script js statique avec une seule fonction:
function alpacaForm(tag, config) {
$(tag).alpaca(config);
}
Ensuite, j'inclus ce script dans index.html, en suivant toutes les dépendances d'Alpaca:
<!-- 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>
Ensuite, j'appelle simplement alpacaForm dans mon application React:
export default function Form() {
useEffect(() => {
alpacaForm("#form", {
"schema": {
...
},
"options": {
...
}
}
);
}, []);
return <>
<h2>Alpaca Form</h2>
<div id="form"/>
</>;
}
Voir le code source ici: https://gitlab.com/AlbertGevorgyan/bootreact