1

我正在尝试实现 FLIP 动画技术。我必须访问getBoundingClientRect()react 的子元素。

let ref = React.useRef(Js.Nullable.null);
<div ref={ReactDOMRe.Ref.domRef(ref)}>
  {Belt.List.map(items, item => {
    // ...
  })}
</div>

我以这种方式访问​​ ref 内容:

let elMaybe = ref->React.Ref.current->Js.Nullable.toOption;

然后是 DOM 元素的子元素:

let children = el->ReactDOMRe.domElementToObj##children;

我和孩子们有问题。如果我使用Js.log(children),我会在开发控制台中看到正确的孩子列表。但List.length(children)总是返回 2。

这段代码:

Belt.List.map(children, child => {
  Js.log(child)
});

仅记录第一个孩子和undefined.

我应该如何迭代那些孩子?有没有比 Js.log 更好的方法来调试对象的内容?

4

1 回答 1

1

children不是一个list,是一个array。你永远不会list从 JavaScript 中得到 s,因为它在那里不作为一个概念存在。

只需使用Array.lengthand Belt.Array.map,那么你应该很好。

有关详细信息,请参阅List & Array上的 Reason 文档。

于 2020-03-08T21:26:08.677 回答