如何在react js中添加外部javascript文件

vee*_*lli 4 reactjs

我想包含 jquery.min.js 并添加一个外部 javascript 文件并在现有的 react js 文件中调用一个 javascript 函数。

我在下面做了但它不起作用

const VoCaaSComponentbtn = (
        <React.Fragment>
             <div>
            <script type="text/javascript"src="https:xxxx/jquery-3.3.1.min.js"></script> 
            <script type="text/javascript"src="https:xxx/microsurvey" defer="defer"></script>
            <div id="microsurvey" module="true" tab-info="tabname"></div>
            <script type="text/javascript"> voc_getsurvey(); </script>                  
            </div>
        </React.Fragment>
    );
Run Code Online (Sandbox Code Playgroud)

Her*_*tel 8

您可以导入主 HTML 文件中的所有脚本。

如果要在 react 组件内部导入脚本,可以使用以下选项。

选项 1:使用纯 Javascript 和 React 自定义钩子

创建自定义钩子 [ useScript.js ]

import { useEffect } from 'react';

const useScript = url => {
  useEffect(() => {
    const script = document.createElement('script');
    script.src = url;
    script.async = true;
    document.body.appendChild(script);
    return () => {
      document.body.removeChild(script);
    };
  }, [url]);
};

export default useScript;
Run Code Online (Sandbox Code Playgroud)

import useScript from 'hooks/useScript';

const MyComponent = props => {
  useScript('https://use.typekit.net/foobar.js');
  // rest of your component
}
Run Code Online (Sandbox Code Playgroud)

选项 2:在 ComponentDidMount 中使用纯 Javascript

componentDidMount () {
  const script = document.createElement("script");
  script.src = url;
  script.async = true;
  document.body.appendChild(script);
}
Run Code Online (Sandbox Code Playgroud)

选项 3: 使用危险的SetInnerHTML

const codeStr = `
  <div>
     <script type="text/javascript"src="https:xxxx/jquery-3.3.1.min.js"></script> 
     <script type="text/javascript"src="https:xxx/microsurvey" defer="defer"></script>
     <div id="microsurvey" module="true" tab-info="tabname"></div>
     <script type="text/javascript"> voc_getsurvey(); </script>                  
  </div>
`

<div dangerouslySetInnerHTML={{ __html: codeStr }} />
Run Code Online (Sandbox Code Playgroud)


Fer*_*tel 5

您可以在公共目录中的 indeex.html 页面中添加外部 JS 库。

公共/index.html

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="utf-8" />
  <link rel="icon" href="%PUBLIC_URL%/favicon.ico" />
  <meta name="viewport" content="width=device-width, initial-scale=1" />
  <meta name="theme-color" content="#000000" />
  <meta name="description" content="Web site created using create-react-app" />
  
  <link rel="manifest" href="%PUBLIC_URL%/manifest.json" />
  
  <script type="text/javascript"src="https:xxxx/jquery-3.3.1.min.js"></script> 
  <title>React App</title>
</head>

<body>
  <noscript>You need to enable JavaScript to run this app.</noscript>
  <div id="root"></div>
  
</body>

</html>
Run Code Online (Sandbox Code Playgroud)