component.refs在componentDidMount中不再可用?

时间:2015-03-11 02:59:52

标签: reactjs

来自React v0.13的更新日志:

“ref解析顺序略有改变,以便在调用componentDidMount方法后立即对组件提供引用;只有当组件在{{1}内调用父组件的回调时,才能观察到此更改这是一种反模式,应该避免使用“

那么,在DOM挂载后访问componentDidMount是否有更好的方法?我不喜欢使用this.refs,但这是我在安装后看到的在特定DOM上工作的最佳方法。我缺少替代方法吗?或者,是将setTimeout()方法直接附加到组件的最佳方法吗?

1 个答案:

答案 0 :(得分:15)

也许你正在阅读太多内容。

我的解释是,componentDidMount中提供了所有对子组件的引用。

更改是在子组件自己的componentDidMount完成之前(在父组件之前发生)它们不可用。如果你从孩子的componentDidMount内部调用一些回调,那么你只会受到影响,并且该代码会立即尝试使用ref。这似乎是一个边缘案例,正如他们所说,反模式。

所以"正常使用"不应受这种变化的影响。

请尝试报告。