알파카를 React.js로 가져 오기

Oct 24 2020

React 앱에서 Alpaca 양식을 사용하려고합니다.

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은 이것을 컴파일하지만 브라우저에 다음 메시지가 표시됩니다.

jquery__WEBPACK_IMPORTED_MODULE_1___default(...)(...).alpaca is not a function

"npm start"를 실행하는 동안 브라우저 오류가 다음과 같이 표시됩니다. ReferenceError : jQuery가 정의되지 않았습니다.

답변

OussamaBENMAHMOUD Oct 25 2020 at 06:30

Alpaca에는 handlebars.js가 필요하므로 alpaca.js를 가져 오기 전에 가져와야합니다. 시도해보고 이것이 효과가 있는지 말할 수 있습니까?

AlbertGevorgyan Oct 25 2020 at 16:55

Spring Boor 애플리케이션에서 작동하는 솔루션을 찾은 것 같습니다. 먼저 함수가 하나만있는 정적 js 스크립트를 만듭니다.

function alpacaForm(tag, config) {
    $(tag).alpaca(config);
}

그런 다음 모든 Alpaca 종속성에 따라 index.html에이 스크립트를 포함합니다.

    <!-- 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>

그런 다음 React 앱에서 alpacaForm을 호출합니다.

export default function Form() {
    useEffect(() => {
        alpacaForm("#form", {
               "schema": {
                   ...
               },
               "options": {
                   ...
               }
           }
        );
    }, []);

    return <>
        <h2>Alpaca Form</h2>
        <div id="form"/>
    </>;
}

여기에서 소스 코드를 참조하십시오. https://gitlab.com/AlbertGevorgyan/bootreact