我设置一个使用内联函数定义反应ref
render =() => {
return (
<div className="drawer" ref={drawer => this.drawerRef = drawer}>
然后在componentDidMount
的DOM参考未设置
componentDidMount =() => {
// this.drawerRef is not defined
我的理解是ref
回调应该在mount期间运行,不过addi ng console.log
报表显示componentDidMount
被称为之前的ref回调函数。
其他代码样本显示相同的假设,componentDidMount
后应在render
定义的任何ref
回调被称为,它甚至stated in the conversation
所以componentDidMount是在所有ref回调已经执行完 之后开除了?
是的。
我使用的反应15.4.1
别的东西,我已经试过
要验证ref
函数被调用,我试着定义它的类本身
setDrawerRef = (drawer) => {
this.drawerRef = drawer;
}
然后在render
<div className="drawer" ref={this.setDrawerRef}>
在这种情况下控制台日志揭示了回调的确是被称为componentDidMount
我可能是错的,但是当你使用render方法的箭头函数时,它会从类的外部的词法范围中捕获'this'的值。尝试摆脱你的类方法的箭头函数语法,看看它是否有帮助。 – Yoshi
这对我很好。您确定在DidMount之后引用回拨电话吗?制作2个控制台。登录这两个函数,看看哪一个是第一个 – GProst
我正在使用15.5.4 React – GProst