我有一个自定义组件,用于监听事件,如果检测到则调用回调函数。
componentWillMount(props){
this.setState(this.props);
window.removeEventListener("ReactGridItemResize",this.onReactGridItemResize.bind(this));
window.addEventListener("ReactGridItemResize",this.onReactGridItemResize.bind(this),false);
}
onReactGridItemResize(){
this.refs.highChart.chart.reflow();
}
在render
方法中,我正在设置ref
,就像这样
<div className="chart pull-right">
<ReactHighcharts ref="highChart" config={chartConfig}/>
</div>
如果我尝试访问ref
上的componentDidMount
我无法确定为什么它无法在addEventListener
回调中获得相同内容,因为此回调将是基于某些用户操作触发,这些操作肯定会在componentDidMount
之后触发。
所以this.refs.highChart
即将null
。
请帮我解决这个问题。
感谢。
答案 0 :(得分:2)
您可以尝试将回调作为ref
道具的值,如下所示:
<div className="chart pull-right">
<ReactHighcharts ref={ chart => { this.highChart = chart; } } config={chartConfig}/>
</div>
然后在处理程序中:
this.highChart.chart.reflow();