我想进行一些 dom 节点大小计算(渲染的 DOM 节点的顶部、底部和大小属性)
我现在正在做的componentDidUpdate
方法是在这个方法上调用 findDOMNode:
componentDidUpdate() {
var node = ReactDOM.findDOMNode(this);
this.elementBox = node.getBoundingClientRect();
this.elementHeight = node.clientHeight;
// Make calculations and stuff
}
这工作正常,但我有点担心性能,并对最佳实践做出react。有几个地方谈到使用ref
属性而不是 findDOMNode,但所有这些都是针对子 dom 元素的,在我的情况下,我只想要组件的根 DOM 节点。
使用 ref 的替代方法可能如下所示:
render(){
return (
<section // container
ref={(n) => this.node = n}>
// Stuff
</section>
}
componentDidUpdate() {
this.elementBox = this.node.getBoundingClientRect();
this.elementHeight = this.node.clientHeight;
// Make calculations and stuff
}
老实说,将 ref 回调附加到我的根 dom 节点只是为了获取它的引用对我来说并不正确。
在这种情况下,什么被认为是最佳实践?哪个性能更好?