antd pro V5如何引入第三方js脚本?
本地有几个js文件需要在页面中引入使用,在普通的js项目中可以直接在html的script标签使用,函数都可以正常调用,例子如下:
index.html
<head>
<script type="text/javascript" src=".myscript/sdk.min.js"></script>
<script type="text/javascript" src=".myscript/myFun.js"></script>
<script type="text/javascript">
function handle() {
// 使用myFun.js文件中的函数myFunc1
myFunc1("getData", {....}).......
}
</script>
</head>
<body>
<main>
<div onclick="handle()">操作</div>
</main>
</body>但是antd pro V5版本没有document.ejs,scripts的引入实在config.ts中配置headScripts,我将这几个文件都放到了public/js目录下,然后引入:config.ts
headScripts: [
{src: '/js/sdk.min.js'},
{src: '/js/myFun.js'},
],test.tsx
const Test = () => {
function handle() {
// error:Cannot find name 'myFunc1'
myFunc1("getData", {....}).......
}
return <div onClick={handle}>操作</div>
}
export default Test可是这样无法在tsx页面中使用,函数全部报错Cannot find name。这几个文件是别人提供的文件,函数变量等全部没有导出,我现在如何处理才能在tsx页面中正常使用呢,难道我只能重新改写文件全部用export导出然后页面中导入使用吗,这样要改的东西很多,几个js文件的变量函数啥的都关联高但是很分散
回复
1个回答
test
2024-07-03
// config.ts
export default defineConfig({
// ...
headScripts: [
{ src: '/js/sdk.min.js' },
{ src: '/js/myFun.js' },
],
// ...
});
// Test.tsx
const Test = () => {
function handle() {
// 使用window对象访问全局函数
if (window.myFunc1) {
window.myFunc1("getData", { /*...*/ });
}
}
return <div onClick={handle}>操作</div>
}
export default Test;
你可以在你的.tsx文件:
declare global {
interface Window {
myFunc1: (arg1: string, arg2: any) => void;
}
}回复
适合作为回答的
- 经过验证的有效解决办法
- 自己的经验指引,对解决问题有帮助
- 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
- 询问内容细节或回复楼层
- 与题目无关的内容
- “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容