来自React v0.13的更新日志:
“ref解析顺序略有改变,以便在调用componentDidMount
方法后立即对组件提供引用;只有当组件在{{1}内调用父组件的回调时,才能观察到此更改这是一种反模式,应该避免使用“
那么,在DOM挂载后访问componentDidMount
是否有更好的方法?我不喜欢使用this.refs
,但这是我在安装后看到的在特定DOM上工作的最佳方法。我缺少替代方法吗?或者,是将setTimeout()
方法直接附加到组件的最佳方法吗?
答案 0 :(得分:15)
也许你正在阅读太多内容。
我的解释是,componentDidMount
中提供了所有对子组件的引用。
更改是在子组件自己的componentDidMount
完成之前(在父组件之前发生)它们不可用。如果你从孩子的componentDidMount
内部调用一些回调,那么你只会受到影响,并且该代码会立即尝试使用ref
。这似乎是一个边缘案例,正如他们所说,反模式。
所以"正常使用"不应受这种变化的影响。
请尝试报告。