Nhập alpaca vào React.js
Tôi đang cố gắng sử dụng biểu mẫu Alpaca trong ứng dụng 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 biên dịch cái này nhưng trong trình duyệt, tôi thấy thông báo này:
jquery__WEBPACK_IMPORTED_MODULE_1___default(...)(...).alpaca is not a function
Trong khi chạy "npm start", lỗi trình duyệt hiển thị: ReferenceError: jQuery không được xác định.
Trả lời
Alpaca yêu cầu handlebars.js nên bạn cần nhập nó trước khi nhập alpaca.js. Bạn có thể thử nó và cho biết nếu điều này làm việc cho bạn?
Có vẻ như tôi đã tìm thấy giải pháp hoạt động trong ứng dụng Spring Boor. Đầu tiên, tôi tạo một tập lệnh js tĩnh chỉ với một chức năng:
function alpacaForm(tag, config) {
$(tag).alpaca(config);
}
Sau đó, tôi đưa tập lệnh này vào index.html, tuân theo tất cả các phụ thuộc 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>
Sau đó, tôi chỉ cần gọi alpacaForm trong ứng dụng React của mình:
export default function Form() {
useEffect(() => {
alpacaForm("#form", {
"schema": {
...
},
"options": {
...
}
}
);
}, []);
return <>
<h2>Alpaca Form</h2>
<div id="form"/>
</>;
}
Xem mã nguồn tại đây: https://gitlab.com/AlbertGevorgyan/bootreact