首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在React中加载特定组件(路由)上的脚本

在React中加载特定组件(路由)上的脚本
EN

Stack Overflow用户
提问于 2020-01-07 22:54:09
回答 2查看 229关注 0票数 1

是否可以仅在特定的React组件中运行html脚本,而不是直接在index.html中运行。脚本加载第三方条形码扫描器,它只在一个组件中使用,因此我希望避免为每个组件加载它,因为这会减慢整个应用程序的速度。

npm模块可以在这里找到:https://www.npmjs.com/package/dynamsoft-javascript-barcode,但是没有关于如何导入它的文档,只是像这样包含了它:

代码语言:javascript
复制
<script src="https://cdn.jsdelivr.net/npm/dynamsoft-javascript-barcode@7.2.2-v2/dist/dbr.js" data-productKeys="LICENSE-KEY"></script> 
<script>
  let barcodeScanner = null;
        Dynamsoft.BarcodeScanner.createInstance({
            onFrameRead: results => {console.log(results);},
            onUnduplicatedRead: (txt, result) => {alert(txt);}
        }).then(scanner => {
            barcodeScanner = scanner;
            barcodeScanner.show();
        });
</script> 
EN

回答 2

Stack Overflow用户

发布于 2020-02-10 09:55:30

下面是Dynamsoft GitHub存储库提供的React示例:https://github.com/dynamsoft-dbr/javascript-barcode/tree/master/example/web/react

您可以查看Dynamsoft.jsHelloWorld.js,了解如何导入和使用该模块:

代码语言:javascript
复制
import Dynamsoft from "dynamsoft-javascript-barcode";
Dynamsoft.BarcodeReader.engineResourcePath = "https://cdn.jsdelivr.net/npm/dynamsoft-javascript-barcode@7.3.0-v1/dist/";
// Please visit https://www.dynamsoft.com/CustomerPortal/Portal/TrialLicense.aspx to get a trial license
Dynamsoft.BarcodeReader.productKeys = "PRODUCT-KEYS";
// Dynamsoft.BarcodeReader._bUseFullFeature = true; // Control of loading min wasm or full wasm.
export default Dynamsoft;
代码语言:javascript
复制
import Dynamsoft from "../Dynamsoft";
import React from 'react';

class HelloWorld extends React.Component {
    ...
    let reader = this.reader = this.reader || await Dynamsoft.BarcodeReader.createInstance();
    ...
}

注意:此示例使用7.3.0-v17.2.2-v2不支持此用法。

票数 1
EN

Stack Overflow用户

发布于 2020-01-08 00:57:09

我还没有尝试过这段代码,但我已经做了一些代码,比如this.You可以像这样添加脚本标记:

代码语言:javascript
复制
class YourComponent extends React.Component {
  loadScript() {
    let script = document.createElement("script");
    script.src = "https://cdn.jsdelivr.net/npm/dynamsoft-javascript-barcode@7.2.2-v2/dist/dbr.js";
    script.setAttribute("data-productKeys","LICENSE-KEY");
    script.type = "text/javascript";
    document.head.append(script);
  }
  componentWillMount() {
    if(!YourComponent.bScriptLoaded){
      this.loadScript();  
      YourComponent.bScriptLoaded = true; 
    }
  }
}

这将在头标记and.And中添加脚本标记,之后您可以在组件中运行代码。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59630845

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档