我正在使用react.js
在html页面上呈现<script>
。在这个脚本中,我需要在我的反应类中调用一个javascript函数。
这就是我的......
class Example extends React.Component {
componentWillMount() {
//render a script
const script = document.createElement("script");
script.src = "http//random_source.js";
render(){
//call method from the script rendered
window.someMethod();
return(
<div>{this.componentWillMount}</div>
);
}
}
所以componentWillMount()
正在html页面上呈现我的脚本,并且render()
我正在调用window.someMethod()
,其中someMethod
位于呈现的脚本中。
这是否可以使用反应?如果没有,有什么工作吗?
答案 0 :(得分:0)
是的,确实可以使用reactJS。我用这个实现了很少的滚动事件。唯一的条件是你的javascript应该在你的reactjs组件之前加载,否则会抛出未定义的错误。
但是,如果仅对此特定组件需要,则只能将其实现为组件类。
答案 1 :(得分:0)
脚本是异步的,因此您需要等待加载和解析脚本。完成后,将触发onload
回调/事件
class Example extends React.Component {
getInitialState(){
return {loaded:false} //initially not loaded
}
componentWillMount() {
//render a script
const script = document.createElement("script");
script.src = "http//random_source.js";
//when the script loads, we're ready to go, so change state
script.onload = (function(){
this.setState({loaded: true})
}).bind(this);
//append the script to the DOM
//you should take care not to include it twice
// and if include to setState to loaded just as script.onload does
document.getElementsByTagName('head')[0].appendChild(script);
}
render(){
if(!this.state.loaded){
return (<div>Loading...</div>);
}
//call method from the script rendered
window.someMethod();
return(
<div>{this.componentWillMount}</div>
);
}
}