React文档包含以下警告:
永远不要访问任何组件的渲染方法中的引用 - 或者任何组件的渲染方法甚至在调用堆栈中的任何位置运行。
为什么呢?我的问题是,我正在编写一个组件,它以依赖于孩子大小的方式规划孩子。也就是说,我需要测量DOM节点,因此我需要访问每个孩子,我计划通过refs来渲染。那有什么不对?当然,我需要考虑到一些孩子可能还不存在于refs中(在第一个渲染中,没有孩子存在)。
顺便说一句,我的渲染似乎有效。
答案 0 :(得分:4)
免责声明:我不是React核心开发人员,但我在一个大型项目中广泛使用它。
TL; DR:最安全的地方是使用生命周期方法,在.render()
方法中,组件仍然只是对要做什么的声明性描述。
因为您在.render()
方法中构建的内容不是要呈现的组件,而是描述您希望React构建的内容您。这种结构发生得晚一些(当所有的优化都进入时)。同时,返回React.createClass
的对象将替换为新对象。可视化它就像你发送一封信给React(发送到.createClass()
的对象)而React用包(组件)响应。如果您需要对要创建的子组件执行某些操作,请查看lifecycle methods。 .refs
的时间应填充.componentDidMount()
。