javascript - 如何在 ReactJS 中调用第三方 javascript 函数
问题描述
我有一个第三方 javascript 文件app.js
,其中包含以下代码段
(function ($) {
"use strict";
// json for properties markers on map
var props = [];
// custom infowindow object
var infobox = new InfoBox({
disableAutoPan: false,
maxWidth: 202,
pixelOffset: new google.maps.Size(-101, -285),
zIndex: null,
boxStyle: {
background: "url('images/infobox-bg.png') no-repeat",
opacity: 1,
width: "202px",
height: "245px"
},
closeBoxMargin: "28px 26px 0px 0px",
closeBoxURL: "",
infoBoxClearance: new google.maps.Size(1, 1),
pane: "floatPane",
enableEventPropagation: false
});
// function that adds the markers on map
var addMarkers = function (props, map) {}
})(jQuery)
目前正在使用以下步骤加载脚本
loadScript(src) {
const script = document.createElement("script");
script.src = src;
script.async = false;
document.body.appendChild(script);
}
和
this.loadScript('js/app.js');
但是现在我想从 reactJS 组件中访问该功能addMarkers
,它似乎window.functionName
不起作用,那么我该如何实现呢?
注意:app.js
也在其他组件中加载
解决方案
您不能,该函数是在自执行函数的闭包内定义的。像这样使用自执行函数的目的是阻止局部变量污染窗口命名空间。
jQuery 作为参数传入的事实使它看起来像这个脚本创建了一个 jQuery 插件,但您只发布了代码片段。如果它是一个 jQuery 插件,您通常会通过 jQuery 对象或它的快捷方式 $ 对象访问它,但您的问题中没有足够的信息需要知道。
附带说明一下,将 jQuery 与 React 等现代框架混合使用通常是不受欢迎的。你确定你需要这个脚本来做你想做的事吗?不能直接调用 Google Maps API 来消除对 jQuery 的需要吗?
推荐阅读
- python - HTML 内容在 Flask 模板中超出框架
- sql - 将 ID 分配给连续整数
- java - JPA 使用子查询而不是联接
- python-3.x - 在 python 中使用 OS 模块时加载 CMD 配置文件
- javascript - 允许所有权限时,FirebaseError 权限被拒绝(模拟器)
- javascript - 如何在 Svelte 的类属性中使用反应函数?
- stored-procedures - 如何在 postgersql 中为 select 语句编写存储过程
- google-cloud-firestore - Integromat 自动化问题 - 无法在 Google Firestore 中存储数组
- json - 使用 jq 以人类可读格式打印 JSON 数组
- python - 通过 VPN 使用 python 套接字