最佳答案
问题
我正在使用内联函数定义设置一个反应 ref
render = () => {
return (
<div className="drawer" ref={drawer => this.drawerRef = drawer}>
然后在 componentDidMount中不设置 DOM 引用
componentDidMount = () => {
// this.drawerRef is not defined
我的理解是 ref回调应该在挂载期间运行,但是添加 console.log语句显示 componentDidMount被称为 之前的 ref 回调函数。
我看过的其他代码示例,例如 github 上的 这个讨论表明了同样的假设,componentDidMount应该被称为 之后任何在 render中定义的 ref回调,它甚至是 在谈话中陈述
因此,在所有的 ref 回调完成之后,就会启动 Component entDidMount 被处决了?
是的。
我用的是反应 15.4.1
我还试过别的方法
为了验证正在调用的 ref函数,我尝试在类上定义它
setDrawerRef = (drawer) => {
this.drawerRef = drawer;
}
然后是 render
<div className="drawer" ref={this.setDrawerRef}>
在这种情况下,控制台日志显示回调确实被称为 之后componentDidMount