使用需要直接访问DOM的库(例如document.getElementById())呈现组件的最佳方法是什么?目前,由于setTimeout,我得到了一些有用的东西:
class MyComponent extends React.Component {
render(){
setTimeout(function(){
myCoolGraphLibrary.createChart({
container : "myChartContainer",
series : [...],
...
});
},1000);
return (<div id="myChartContainer"></div>);
}
}没有setTimeout,容器在DOM中还不可用,因此对createChart的调用失败。
是否有更好的设计模式来实现这一点?
发布于 2016-01-04 17:02:40
使用生命周期方法。https://facebook.github.io/react/docs/component-specs.html
特别是,您需要使用componentDidMount来运行依赖于现有DOM元素的任何代码。如果要添加事件侦听器,请确保在componentWillUnmount中删除它们
编辑:对于您的评论,您的代码如下所示:
class MyComponent extends React.Component {
componentDidMount() {
myCoolGraphLibrary.createChart({
container : "myChartContainer",
series : [...],
...
});
}
render() {
return (<div id="myChartContainer"></div>);
}
}https://stackoverflow.com/questions/34596088
复制相似问题