Итак, суть ссылок в том, что они не гарантируются при первом рендере. Вы можете быть уверены, что они установлены во время и после componentDidMount
, поэтому у вас есть два пути вперед.
Вы можете использовать стиль обратного вызова ref и установить состояние на его основе. Например. вместо того, чтобы передавать ваш ref как опору, вы можете передать ссылку на функцию, подобную this.handleRef
, и она будет выполнять некоторую логику:
handleRef = r => {
this.setState({ bodyHeight: r.clientHeight})
this.calendarBodyRef .current = r;
};
Или вы можете сохранить текущую настройку, но вам придется переместить свой бит clientHeight
в функцию жизненного цикла, например:
componentDidMount() {
this.setState({ bodyHeight: this.calendarBodyRef .current.clientHeight });
}
В конечном счете, вы не можете сразу прочитать текущее значение ссылки, как это, вам придется проверить его после рендера, а затем прочитать bodyHeight
из состояния.