小编Yum*_*mie的帖子

ResizeObserver API 测试笑话

我尝试测试使用ResizeObserver. 另外,我需要检查元素是否溢出或调整大小后没有溢出。于是我写了这样一个决定:

import { useLayoutEffect, useState } from 'react';
import ResizeObserver from 'resize-observer-polyfill';

export default function useOverflowCheck(ref) {
  const [isOverflowing, setIsOverflowing] = useState(false);

  const isOverflow = current => {
    if (current) {
      const hasOverflowX = current.offsetWidth < current.scrollWidth;
      const hasOverflowY = current.offsetHeight < current.scrollHeight;

      setIsOverflowing(hasOverflowX || hasOverflowY);
    }
  };

  // eslint-disable-next-line react-hooks/exhaustive-deps
  useLayoutEffect(() => {
    const element = ref.current;

    const resizeObserver = new ResizeObserver(entries => {
      entries && entries.length && isOverflow(entries[0].target);
    });

    if (element) {
      resizeObserver.observe(element);
      return () …
Run Code Online (Sandbox Code Playgroud)

unit-testing reactjs jestjs react-hooks react-resize-observer

4
推荐指数
1
解决办法
2033
查看次数