从反应组件调用外部Javascript函数
Call external Javascript function from react components
我不确定以前是否问过这个问题,或者有人在 reactjs 上遇到过同样的问题。所以场景是这样的,我有一个包含一些javascript的index.html文件。现在在我的反应组件上,我有一个条件,只有在条件为真时才会渲染。这意味着最初当我的页面加载时,组件尚未呈现。当我切换一个按钮时,这是渲染该组件的位置。该子组件需要调用包含在我的索引.html中的 JavaScript 方法。我应该怎么做?
任何帮助将不胜感激。
in index.html
<script type="text/javascript">
function test(){
alert('Function from index.html');
}
</script>
在您的组件中
componentWillMount() {
window.test();
}
2022 打字稿编辑:
创建一个文件global.d.ts
如下所示(文档):
interface Window {
test: () => void;
}
✔
尝试使用此解决方案在启用 TypeScript 的情况下从 React 调用全局函数:
在索引中.html或some_site.js
function pass_function(){
alert('42');
}
然后,从你的反应组件:
window["pass_function"]();
当然,您可以传递一个参数:
//react
window["passp"]("react ts");
//js
function passp(someval) {
alert(`passes parameter: ${someval}`);
}
因此,要么在全局范围(也称为窗口)上定义方法。然后你可以从任何方法使用它,无论是否是 React。
或者您可以切换到基于模块的范式并使用 require/import 来获取模块并使用函数。
对于较大的项目,后者更好,因为它可以扩展,而如果您需要演示或POC,您当然可以将所有内容连接到全球范围,并且它将起作用。
有关模块的更多信息,请访问:http://exploringjs.com/es6/ch_modules.html
您可以将方法附加到全局窗口对象,然后在组件中像这样使用它:
<button onClick={this.howItWorks} type="button" className='btn'>How it Works</button>
howItWorks = () => {
window.HowItWorksVideo();
}
对于打字稿用户,请尝试以下操作:
declare global {
interface Window {
externalMethod: (params: any) => void;
}
}
然后你可以在你的 react 组件中这样调用它
window.externalMethod(params)
相关文章:
- 使用html中的外部javascript进行数据验证
- 将变量传递给外部Javascript
- 关于引入外部javascript文件的问题&css通过https
- 有没有办法在tinymceiframe中加载一个外部javascript文件
- 如何在MVC5中ajax调用的部分视图中引用外部javascript
- HTML外部javascript加载另一个javascript
- 如何在定义js文件后为外部javascript文件设置变量
- ResolveUrl没有'我似乎不适合当链接到具有动态虚拟目录的外部javascript文件时
- 如何在小部件中添加外部javascript库和样式表
- 外部JavaScript验证不起作用
- Chrome扩展无法通过清单加载外部javascript
- 动态虚拟目录和外部 JavaScript 链接
- Web 地址虚拟目录会断开外部 JavaScript 链接,因此找不到文件
- 如何从窗体调用外部javascript方法
- 如何使用外部Javascript库(如jQuery)重命名Google闭包样式表
- 如何使用Java在WebDriver中调用外部JavaScript
- 从Haml调用外部javascript中的ruby数组
- 在选择更改时更改从外部javascript生成的flash播放器
- 缓存javascript失败,因为使用了外部javascript
- 在AngularJS中手动加载和卸载外部javascript