Получение clientHeight из ссылки на DOM по причине реакции

Я обращаюсь к ссылке reason-react DOM, чтобы определить рост клиента.

К сожалению, clientHeight не является частью ref API. Итак, это не удается:

ref
  -> React.Ref.current
  -> Js.Nullable.toOption
  -> Belt.Option.map(this => {
    React.Ref.clientHeight(this);
});

The value clientHeight can't be found in React.Ref.

Есть ли способ извлечь высоту компонента из ссылки?

Реф был получен от div.


person Peteris    schedule 22.09.2019    source источник
comment
Ссылка может содержать любое значение. Как вы его приобрели? Если вы получили его с помощью ReactDOMRe.Ref.domRef, вы получите Dom.element и сможете использовать Element.clientHeight из bs-webapi.   -  person glennsl    schedule 23.09.2019
comment
Добавлено уточнение - ваш ответ сработал, поэтому я приму его, если вы сможете опубликовать его.   -  person Peteris    schedule 23.09.2019


Ответы (1)


Предполагая, что вы получили ссылку либо от ReactDOMRe.Ref.domRef, либо от ReactDOMRe.Ref.callbackDomRef, вы получите Dom.element и сможете использовать Element.clientHeight от bs-webapi:

open Webapi.Dom;

ref
  -> React.Ref.current
  -> Js.Nullable.toOption
  -> Belt.Option.map(Element.clientHeight);
person glennsl    schedule 23.09.2019
comment
Нельзя ли извлечь клиентскую высоту dom ref без bs-webapi? - person a-c-sreedhar-reddy; 02.08.2020
comment
@ a-c-sreedhar-reddy Конечно, вы можете либо создать привязку к нему самостоятельно, либо преобразовать его в Js.t({..}) с помощью ReactDom.domElementToObj, чтобы получить к нему доступ с помощью ref##clientHeight. Хотя я бы не рекомендовал последнее, так как оно выбрасывает безопасность типов из окна. - person glennsl; 02.08.2020