Как сопоставить шаблон по значению типа React.Ref.t (Js.Nullable.t ('a)) - PullRequest
1 голос
/ 09 июля 2019

Я пытаюсь получить доступ к элементу DOM как объект JS.

let navRef = React.useRef(Js.Nullable.null);
  let width =
    switch (Js.Nullable.toOption(navRef)) {
    | None => 0.0
    | Some(nav) => ReactDOMRe.domElementToObj(nav)##clientWidth
    };

Но у меня есть тип ошибки на navRef внутри Js.Nullable.toOption

Ошибка: это выражение имеет тип React.Ref.t (Js.Nullable.t ('a)) но ожидалось выражение типа Js.Nullable.t ('b) = Js.nullable (' b)

1 Ответ

3 голосов
/ 09 июля 2019

React.Ref.t является непрозрачным типом, поэтому вы не можете напрямую сопоставить его с шаблоном. Но вы можете получить доступ к значению ссылки, используя React.Ref.current, а затем сопоставить шаблон с этим:

let navRef = React.useRef(Js.Nullable.null);
  let width =
    switch (Js.Nullable.toOption(React.Ref.current(navRef))) {
    | None => 0.0
    | Some(nav) => ReactDOMRe.domElementToObj(nav)##clientWidth
    };
...