Здравствуйте, передаю дочернему компоненту ref и пытаюсь получить его offsetLeft, но, по неизвестной мне причине, offsetLeft некорректен.
Делаю так:
export class Tooltip extends Component {
constructor(props) {
super(props);
this.elementRef = React.createRef();
this.tooltipRef = React.createRef();
}
componentDidMount() {
if (typeof this.elementRef !== 'undefined') {
console.log(this.elementRef.current.offsetLeft);
}
}
render() {
const {
title,
children,
} = this.props;
return(
<>
{React.cloneElement(children, { ref: this.elementRef })}
{title ? (
<Portal>
<div ref={this.tooltipRef} className={styles.tooltip}>{title}</div>
</Portal>
) : null}
</>
);
}
}
В консоли я получаю 5 (условно), что является некорректным результатом.
Если я в консоли вместо:
if (typeof this.elementRef !== 'undefined') {
console.log(this.elementRef.current.offsetLeft);
}
Сделаю так:
if (typeof this.elementRef !== 'undefined') {
console.log(this.elementRef);
}
То в current будет offsetLeft: 20 - что является корректным значением.
Вопрос: почему так происходит?