最佳答案
问题
我正在使用内联函数定义设置一个反应 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