在 React v18 中,可以使用 useEffect 钩子和 ref 来实现在动态数据渲染完成后滑动到某个数据位置。

首先,你需要在你的组件中创建一个 ref,用来引用需要滚动到的目标元素。然后,在 useEffect 钩子中,监听数据的变化,当数据发生变化时,获取目标元素的位置信息,并使用 scrollIntoView 方法滚动到目标元素的位置。

下面是一个示例代码:

import React, { useEffect, useRef } from 'react';

const MyComponent = ({ data, scrollToIndex }) => {
  const targetRef = useRef(null);

  useEffect(() => {
    if (targetRef.current) {
      targetRef.current.scrollIntoView({ behavior: 'smooth' });
    }
  }, [scrollToIndex]);

  return (
    <div>
      {data.map((item, index) => (
        <div key={index} ref={index === scrollToIndex ? targetRef : null}>
          {item}
        </div>
      ))}
    </div>
  );
};

export default MyComponent;

在上面的示例中,data 是动态渲染的数据数组,scrollToIndex 是需要滚动到的目标数据的索引。

data.map 的循环中,我们为目标元素设置了一个 ref,如果当前索引是需要滚动到的索引 scrollToIndex,我们将 targetRef 赋值给它。

然后,在 useEffect 钩子中,我们监听 scrollToIndex 的变化,当它发生变化时,获取目标元素的位置信息,并使用 scrollIntoView 方法滚动到目标元素的位置。

请注意,上述代码使用了 behavior: 'smooth' 参数来实现平滑滚动效果,如果你需要更直接的滚动效果,可以将该参数移除。

希望这个示例能帮助到你


原文地址: https://www.cveoy.top/t/topic/hV8i 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录